From 680867b4bb5e2708f02fc3f8c21c3563975c44c7 Mon Sep 17 00:00:00 2001 From: WriterV2 Date: Thu, 7 Nov 2024 18:35:27 +0100 Subject: Feat: Add admin API route to delete story by product id --- src/handlers/admin.rs | 18 ++++++++++++++++++ src/handlers/mod.rs | 4 ++-- 2 files changed, 20 insertions(+), 2 deletions(-) (limited to 'src/handlers') diff --git a/src/handlers/admin.rs b/src/handlers/admin.rs index 7c016dd..3d16b32 100644 --- a/src/handlers/admin.rs +++ b/src/handlers/admin.rs @@ -132,3 +132,21 @@ pub async fn upload_story( .await?; Ok((StatusCode::CREATED, Json(story)).into_response()) } + +pub async fn delete_story( + ctx: Extension, + mut multipart: Multipart, +) -> Result { + if let Some(field) = multipart.next_field().await? { + if let Some(label) = field.name() { + if label == "id" { + let pid = field.text().await?.parse::()?; + Story::delete(&ctx.pool, pid).await?; + return Ok((StatusCode::NO_CONTENT).into_response()); + } + return Ok(StatusCode::BAD_REQUEST.into_response()); + } + return Ok(StatusCode::BAD_REQUEST.into_response()); + } + Ok(StatusCode::BAD_REQUEST.into_response()) +} diff --git a/src/handlers/mod.rs b/src/handlers/mod.rs index e2063eb..14ac176 100644 --- a/src/handlers/mod.rs +++ b/src/handlers/mod.rs @@ -9,7 +9,7 @@ use sqlx::SqlitePool; use tower_http::add_extension::AddExtensionLayer; use tower_http::services::ServeDir; -use admin::{admin_healthcheck, admin_middleware, generate_token, upload_story}; +use admin::{admin_healthcheck, admin_middleware, delete_story, generate_token, upload_story}; use frontend_builder::home; use crate::db::story::Story; @@ -35,7 +35,7 @@ pub async fn router(pool: SqlitePool) -> Router { }; Router::new() - .route("/admin/story", post(upload_story)) + .route("/admin/story", post(upload_story).delete(delete_story)) .route("/admin", get(admin_healthcheck)) .layer(middleware::from_fn_with_state( state.clone(), -- cgit v1.2.3