From e536d39c2b7c46e680b40c7dbe039f73af6df805 Mon Sep 17 00:00:00 2001 From: Freakazoid182 <> Date: Wed, 3 Apr 2024 22:42:25 +0200 Subject: [PATCH] Add delete tagline endpoint --- crates/api_common/src/tagline.rs | 8 ++++++++ crates/api_crud/src/tagline/delete.rs | 25 +++++++++++++++++++++++++ crates/api_crud/src/tagline/mod.rs | 1 + crates/db_schema/src/impls/tagline.rs | 10 ++++++---- src/api_routes_http.rs | 2 ++ 5 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 crates/api_crud/src/tagline/delete.rs diff --git a/crates/api_common/src/tagline.rs b/crates/api_common/src/tagline.rs index e2dfd8ffd..88d5b64d3 100644 --- a/crates/api_common/src/tagline.rs +++ b/crates/api_common/src/tagline.rs @@ -21,6 +21,14 @@ pub struct UpdateTagline { pub content: String, } +#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq, Hash)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// Delete a tagline +pub struct DeleteTagline { + pub id: TaglineId, +} + #[derive(Debug, Serialize, Deserialize, Clone)] #[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", ts(export))] diff --git a/crates/api_crud/src/tagline/delete.rs b/crates/api_crud/src/tagline/delete.rs new file mode 100644 index 000000000..26ae7fabb --- /dev/null +++ b/crates/api_crud/src/tagline/delete.rs @@ -0,0 +1,25 @@ +use activitypub_federation::config::Data; +use actix_web::web::Json; +use lemmy_api_common::{ + context::LemmyContext, + tagline::DeleteTagline, + utils::is_admin, + SuccessResponse, +}; +use lemmy_db_schema::source::tagline::Tagline; +use lemmy_db_views::structs::LocalUserView; +use lemmy_utils::error::LemmyError; + +#[tracing::instrument(skip(context))] +pub async fn delete_tagline( + data: Json, + context: Data, + local_user_view: LocalUserView, +) -> Result, LemmyError> { + // Make sure user is an admin + is_admin(&local_user_view)?; + + Tagline::delete(&mut context.pool(), data.id).await?; + + Ok(Json(SuccessResponse::default())) +} diff --git a/crates/api_crud/src/tagline/mod.rs b/crates/api_crud/src/tagline/mod.rs index 9ab1b43f8..709cbaf88 100644 --- a/crates/api_crud/src/tagline/mod.rs +++ b/crates/api_crud/src/tagline/mod.rs @@ -1,3 +1,4 @@ pub mod create; pub mod list; pub mod update; +pub mod delete; diff --git a/crates/db_schema/src/impls/tagline.rs b/crates/db_schema/src/impls/tagline.rs index d70d2fcd8..686474f22 100644 --- a/crates/db_schema/src/impls/tagline.rs +++ b/crates/db_schema/src/impls/tagline.rs @@ -41,10 +41,7 @@ impl Tagline { } } - pub async fn create( - pool: &mut DbPool<'_>, - form: &TaglineInsertForm, - ) -> Result { + pub async fn create(pool: &mut DbPool<'_>, form: &TaglineInsertForm) -> Result { let conn = &mut get_conn(pool).await?; insert_into(tagline) .values(form) @@ -64,6 +61,11 @@ impl Tagline { .await } + pub async fn delete(pool: &mut DbPool<'_>, tagline_id: TaglineId) -> Result { + let conn = &mut get_conn(pool).await?; + diesel::delete(tagline.find(tagline_id)).execute(conn).await + } + async fn clear(conn: &mut AsyncPgConnection) -> Result { diesel::delete(tagline).execute(conn).await } diff --git a/src/api_routes_http.rs b/src/api_routes_http.rs index 305d66663..bfe567d1a 100644 --- a/src/api_routes_http.rs +++ b/src/api_routes_http.rs @@ -125,6 +125,7 @@ use lemmy_api_crud::{ site::{create::create_site, read::get_site, update::update_site}, tagline::{ create::create_tagline, + delete::delete_tagline, list::list_taglines, update::update_tagline }, @@ -375,6 +376,7 @@ pub fn config(cfg: &mut web::ServiceConfig, rate_limit: &RateLimitCell) { .wrap(rate_limit.message()) .route("/", web::post().to(create_tagline)) .route("/", web::put().to(update_tagline)) + .route("/delete", web::post().to(delete_tagline)) .route("/list", web::get().to(list_taglines)), ), );