From f1c03ffa808e9b46f1c947f1259e9fb95e59d274 Mon Sep 17 00:00:00 2001 From: Imbus <> Date: Tue, 5 Mar 2024 20:43:32 +0100 Subject: [PATCH] Debug printing in new_comment route --- server/src/routes/comment.rs | 82 ++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 server/src/routes/comment.rs diff --git a/server/src/routes/comment.rs b/server/src/routes/comment.rs new file mode 100644 index 0000000..e7098f1 --- /dev/null +++ b/server/src/routes/comment.rs @@ -0,0 +1,82 @@ +use crate::db::{db_get_comments, db_new_comment}; +use crate::jwt::Authentication; +use crate::types::{CommentQueryParams, NewComment}; +use crate::ServerState; + +use actix_web::get; +use actix_web::web::{Data, Query}; +use actix_web::{post, web::Json, HttpResponse, Responder, Result}; +use log::info; + +#[get("/comments")] +pub async fn get_comments( + comment_filter: Query, + state: Data, +) -> Result { + let post_id = comment_filter.post_id; + let limit = comment_filter.limit.unwrap_or(10); + let offset = comment_filter.offset.unwrap_or(0); + + info!( + "Getting comments for post {} with limit {} and offset {}", + post_id, limit, offset + ); + + let comments = db_get_comments(&state.pool, post_id, limit, offset).await; + + Ok(HttpResponse::Ok().json(comments)) +} + +#[post("/comments")] +pub async fn new_comment( + data: Json, + state: Data, + auth: Data, +) -> Result { + let user_claims = auth.decode(&data.user_token); + + // Bail if the token is invalid + if let Err(e) = user_claims { + info!("Error validating token: {}", e); + return Ok(HttpResponse::BadRequest().json("Error")); + } + + let claims = user_claims.unwrap(); + + let content = data.content.clone(); + let username = claims.sub.clone(); + + // This one is avoidable if we just store the user id in the token + let userid = sqlx::query!("SELECT id FROM users WHERE username = $1", username) + .fetch_one(&state.pool) + .await + .unwrap() + .id; + + info!( + "User {:?}, with id {:?} is creating a new comment", + &claims.sub, userid + ); + + info!("Creating a new comment {:?}", &data); + + let success = db_new_comment( + &state.pool, + data.parent_post_id, + data.parent_comment_id, + userid, + &content, + ) + .await; + + match success { + true => { + info!("User {:?} created a new comment", &claims.sub); + Ok(HttpResponse::Ok().json("Successfully created comment")) + } + false => { + info!("User {:?} failed to create a new comment", &claims.sub); + Ok(HttpResponse::BadRequest().json("Failed to create comment")) + } + } +}