]> Untitled Git - lemmy.git/blobdiff - crates/api_crud/src/comment/read.rs
Make functions work with both connection and pool (#3420)
[lemmy.git] / crates / api_crud / src / comment / read.rs
index c0136f06cb28b8e24cbb9449bd9151eb96936bc3..e6899fdc71becbd121f9b911c37a9b357906c151 100644 (file)
@@ -1,42 +1,26 @@
 use crate::PerformCrud;
 use actix_web::web::Data;
 use lemmy_api_common::{
+  build_response::build_comment_response,
   comment::{CommentResponse, GetComment},
   context::LemmyContext,
-  utils::{check_private_instance, get_local_user_view_from_jwt_opt},
+  utils::{check_private_instance, local_user_view_from_jwt_opt},
 };
 use lemmy_db_schema::source::local_site::LocalSite;
-use lemmy_db_views::structs::CommentView;
-use lemmy_utils::{error::LemmyError, ConnectionId};
+use lemmy_utils::error::LemmyError;
 
 #[async_trait::async_trait(?Send)]
 impl PerformCrud for GetComment {
   type Response = CommentResponse;
 
-  #[tracing::instrument(skip(context, _websocket_id))]
-  async fn perform(
-    &self,
-    context: &Data<LemmyContext>,
-    _websocket_id: Option<ConnectionId>,
-  ) -> Result<Self::Response, LemmyError> {
+  #[tracing::instrument(skip(context))]
+  async fn perform(&self, context: &Data<LemmyContext>) -> Result<Self::Response, LemmyError> {
     let data = self;
-    let local_user_view =
-      get_local_user_view_from_jwt_opt(data.auth.as_ref(), context.pool(), context.secret())
-        .await?;
-    let local_site = LocalSite::read(context.pool()).await?;
+    let local_user_view = local_user_view_from_jwt_opt(data.auth.as_ref(), context).await;
+    let local_site = LocalSite::read(&mut context.pool()).await?;
 
     check_private_instance(&local_user_view, &local_site)?;
 
-    let person_id = local_user_view.map(|u| u.person.id);
-    let id = data.id;
-    let comment_view = CommentView::read(context.pool(), id, person_id)
-      .await
-      .map_err(|e| LemmyError::from_error_message(e, "couldnt_find_comment"))?;
-
-    Ok(Self::Response {
-      comment_view,
-      form_id: None,
-      recipient_ids: Vec::new(),
-    })
+    build_comment_response(context, data.id, local_user_view, None, vec![]).await
   }
 }