summaryrefslogtreecommitdiff
path: root/src/types/comment.rs
diff options
context:
space:
mode:
authorTyler Murphy <tylermurphy534@gmail.com>2023-02-12 14:11:50 -0500
committerTyler Murphy <tylermurphy534@gmail.com>2023-02-12 14:11:50 -0500
commit3d71da490947aacc52a3b77efdc13d5f0458c57f (patch)
tree8047eb6966655cffc772cbde4d73982fb7064a28 /src/types/comment.rs
parentdocs is ssr'd (diff)
downloadxssbook-3d71da490947aacc52a3b77efdc13d5f0458c57f.tar.gz
xssbook-3d71da490947aacc52a3b77efdc13d5f0458c57f.tar.bz2
xssbook-3d71da490947aacc52a3b77efdc13d5f0458c57f.zip
refactor
Diffstat (limited to 'src/types/comment.rs')
-rw-r--r--src/types/comment.rs44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/types/comment.rs b/src/types/comment.rs
new file mode 100644
index 0000000..cf94bd3
--- /dev/null
+++ b/src/types/comment.rs
@@ -0,0 +1,44 @@
+use serde::Serialize;
+use tracing::instrument;
+
+use crate::{
+ database::{self, comments},
+ types::http::{ResponseCode, Result},
+};
+
+#[derive(Serialize)]
+pub struct Comment {
+ pub comment_id: u64,
+ pub user_id: u64,
+ pub post_id: u64,
+ pub date: u64,
+ pub content: String,
+}
+
+impl Comment {
+ #[instrument()]
+ pub fn new(user_id: u64, post_id: u64, content: &str) -> Result<Self> {
+ let Ok(comment) = comments::add_comment(user_id, post_id, content) else {
+ tracing::error!("Failed to create comment");
+ return Err(ResponseCode::InternalServerError.text("Failed to create post"))
+ };
+
+ Ok(comment)
+ }
+
+ #[instrument()]
+ pub fn from_comment_page(page: u64, post_id: u64) -> Result<Vec<Self>> {
+ let Ok(posts) = database::comments::get_comments_page(page, post_id) else {
+ return Err(ResponseCode::BadRequest.text("Failed to fetch comments"))
+ };
+ Ok(posts)
+ }
+
+ #[instrument()]
+ pub fn reterieve_all() -> Result<Vec<Self>> {
+ let Ok(posts) = database::comments::get_all_comments() else {
+ return Err(ResponseCode::InternalServerError.text("Failed to fetch comments"))
+ };
+ Ok(posts)
+ }
+}