]> Untitled Git - lemmy.git/blobdiff - crates/api_crud/src/private_message/read.rs
Replace Option<bool> with bool for PostQuery and CommentQuery (#3819) (#3857)
[lemmy.git] / crates / api_crud / src / private_message / read.rs
index 87d8ee66e28f537975dcb70a7a026dcc2f0f8578..0d3ba8620eb5fe6b3afa02818ba342294d7d437d 100644 (file)
@@ -1,5 +1,4 @@
-use crate::PerformCrud;
-use actix_web::web::Data;
+use actix_web::web::{Data, Json, Query};
 use lemmy_api_common::{
   context::LemmyContext,
   private_message::{GetPrivateMessages, PrivateMessagesResponse},
@@ -8,40 +7,36 @@ use lemmy_api_common::{
 use lemmy_db_views::private_message_view::PrivateMessageQuery;
 use lemmy_utils::error::LemmyError;
 
-#[async_trait::async_trait(?Send)]
-impl PerformCrud for GetPrivateMessages {
-  type Response = PrivateMessagesResponse;
+#[tracing::instrument(skip(context))]
+pub async fn get_private_message(
+  data: Query<GetPrivateMessages>,
+  context: Data<LemmyContext>,
+) -> Result<Json<PrivateMessagesResponse>, LemmyError> {
+  let local_user_view = local_user_view_from_jwt(data.auth.as_ref(), &context).await?;
+  let person_id = local_user_view.person.id;
 
-  #[tracing::instrument(skip(self, context))]
-  async fn perform(
-    &self,
-    context: &Data<LemmyContext>,
-  ) -> Result<PrivateMessagesResponse, LemmyError> {
-    let data: &GetPrivateMessages = self;
-    let local_user_view = local_user_view_from_jwt(data.auth.as_ref(), context).await?;
-    let person_id = local_user_view.person.id;
+  let page = data.page;
+  let limit = data.limit;
+  let unread_only = data.unread_only.unwrap_or_default();
+  let creator_id = data.creator_id;
+  let mut messages = PrivateMessageQuery {
+    page,
+    limit,
+    unread_only,
+    creator_id,
+  }
+  .list(&mut context.pool(), person_id)
+  .await?;
 
-    let page = data.page;
-    let limit = data.limit;
-    let unread_only = data.unread_only;
-    let mut messages = PrivateMessageQuery {
-      page,
-      limit,
-      unread_only,
+  // Messages sent by ourselves should be marked as read. The `read` column in database is only
+  // for the recipient, and shouldnt be exposed to sender.
+  messages.iter_mut().for_each(|pmv| {
+    if pmv.creator.id == person_id {
+      pmv.private_message.read = true
     }
-    .list(&mut context.pool(), person_id)
-    .await?;
-
-    // Messages sent by ourselves should be marked as read. The `read` column in database is only
-    // for the recipient, and shouldnt be exposed to sender.
-    messages.iter_mut().for_each(|pmv| {
-      if pmv.creator.id == person_id {
-        pmv.private_message.read = true
-      }
-    });
+  });
 
-    Ok(PrivateMessagesResponse {
-      private_messages: messages,
-    })
-  }
+  Ok(Json(PrivateMessagesResponse {
+    private_messages: messages,
+  }))
 }