summaryrefslogtreecommitdiff
path: root/src/database/posts.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/database/posts.rs')
-rw-r--r--src/database/posts.rs11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/database/posts.rs b/src/database/posts.rs
index 96cd18a..6ee5e0f 100644
--- a/src/database/posts.rs
+++ b/src/database/posts.rs
@@ -2,6 +2,7 @@ use std::collections::HashSet;
use std::time::{SystemTime, UNIX_EPOCH};
use rusqlite::{OptionalExtension, Row};
+use tracing::instrument;
use crate::types::post::Post;
use crate::database;
@@ -42,14 +43,18 @@ fn post_from_row(row: &Row) -> Result<Post, rusqlite::Error> {
Ok(Post{post_id, user_id, content, likes, comments, date})
}
+#[instrument()]
pub fn get_post(post_id: u64) -> Result<Option<Post>, rusqlite::Error> {
+ tracing::trace!("Retrieving post");
let conn = database::connect()?;
let mut stmt = conn.prepare("SELECT * FROM posts WHERE post_id = ?")?;
let row = stmt.query_row([post_id], |row| Ok(post_from_row(row)?)).optional()?;
Ok(row)
}
+#[instrument()]
pub fn get_post_page(page: u64) -> Result<Vec<Post>, rusqlite::Error> {
+ tracing::trace!("Retrieving posts page");
let page_size = 10;
let conn = database::connect()?;
let mut stmt = conn.prepare("SELECT * FROM posts ORDER BY post_id DESC LIMIT ? OFFSET ?")?;
@@ -57,14 +62,18 @@ pub fn get_post_page(page: u64) -> Result<Vec<Post>, rusqlite::Error> {
Ok(row.into_iter().flatten().collect())
}
+#[instrument()]
pub fn get_users_posts(user_id: u64) -> Result<Vec<Post>, rusqlite::Error> {
+ tracing::trace!("Retrieving users posts");
let conn = database::connect()?;
let mut stmt = conn.prepare("SELECT * FROM posts WHERE user_id = ? ORDER BY post_id DESC")?;
let row = stmt.query_map([user_id], |row| Ok(post_from_row(row)?))?;
Ok(row.into_iter().flatten().collect())
}
+#[instrument()]
pub fn add_post(user_id: u64, content: &str) -> Result<Post, rusqlite::Error> {
+ tracing::trace!("Adding post");
let likes: HashSet<u64> = HashSet::new();
let comments: Vec<(u64, String)> = Vec::new();
let Ok(likes_json) = serde_json::to_string(&likes) else {
@@ -80,7 +89,9 @@ pub fn add_post(user_id: u64, content: &str) -> Result<Post, rusqlite::Error> {
Ok(post)
}
+#[instrument()]
pub fn update_post(post_id: u64, likes: &HashSet<u64>, comments: &Vec<(u64, String)>) -> Result<(), rusqlite::Error> {
+ tracing::trace!("Updating post");
let Ok(likes_json) = serde_json::to_string(&likes) else {
return Err(rusqlite::Error::InvalidQuery)
};