]> Untitled Git - lemmy.git/blob - crates/api_crud/src/custom_emoji/delete.rs
Make functions work with both connection and pool (#3420)
[lemmy.git] / crates / api_crud / src / custom_emoji / delete.rs
1 use crate::PerformCrud;
2 use actix_web::web::Data;
3 use lemmy_api_common::{
4   context::LemmyContext,
5   custom_emoji::{DeleteCustomEmoji, DeleteCustomEmojiResponse},
6   utils::{is_admin, local_user_view_from_jwt},
7 };
8 use lemmy_db_schema::source::custom_emoji::CustomEmoji;
9 use lemmy_utils::error::LemmyError;
10
11 #[async_trait::async_trait(?Send)]
12 impl PerformCrud for DeleteCustomEmoji {
13   type Response = DeleteCustomEmojiResponse;
14
15   #[tracing::instrument(skip(self, context))]
16   async fn perform(
17     &self,
18     context: &Data<LemmyContext>,
19   ) -> Result<DeleteCustomEmojiResponse, LemmyError> {
20     let data: &DeleteCustomEmoji = self;
21     let local_user_view = local_user_view_from_jwt(&data.auth, context).await?;
22
23     // Make sure user is an admin
24     is_admin(&local_user_view)?;
25     CustomEmoji::delete(&mut context.pool(), data.id).await?;
26     Ok(DeleteCustomEmojiResponse {
27       id: data.id,
28       success: true,
29     })
30   }
31 }