From da9e03e3aea33eb858acecd2cc96a5d144d42081 Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Sat, 3 Feb 2024 02:07:44 -0500 Subject: [PATCH] api for delete --- .../web/storyteller_web/src/api_doc.rs | 3 +++ .../media_files/delete_media_file.rs | 21 ++++++++++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/crates/service/web/storyteller_web/src/api_doc.rs b/crates/service/web/storyteller_web/src/api_doc.rs index e161f53851..0e425e2bff 100644 --- a/crates/service/web/storyteller_web/src/api_doc.rs +++ b/crates/service/web/storyteller_web/src/api_doc.rs @@ -23,6 +23,7 @@ use crate::http_server::common_responses::pagination_page::PaginationPage; use crate::http_server::common_responses::simple_entity_stats::SimpleEntityStats; use crate::http_server::common_responses::user_details_lite::{DefaultAvatarInfo, UserDetailsLight}; use crate::http_server::endpoints::conversion::enqueue_fbx_to_gltf_handler::*; +use crate::http_server::endpoints::media_files::delete_media_file::*; use crate::http_server::endpoints::media_files::get_media_file::*; use crate::http_server::endpoints::media_files::list_featured_media_files::*; use crate::http_server::endpoints::media_files::list_media_files::*; @@ -51,6 +52,7 @@ use crate::http_server::web_utils::response_success_helpers::*; #[openapi( paths( crate::http_server::endpoints::conversion::enqueue_fbx_to_gltf_handler::enqueue_fbx_to_gltf_handler, + crate::http_server::endpoints::media_files::delete_media_file::delete_media_file_handler, crate::http_server::endpoints::media_files::get_media_file::get_media_file_handler, crate::http_server::endpoints::media_files::list_featured_media_files::list_featured_media_files_handler, crate::http_server::endpoints::media_files::list_media_files::list_media_files_handler, @@ -107,6 +109,7 @@ use crate::http_server::web_utils::response_success_helpers::*; EnqueueTTSRequest,EnqueueTTSRequestSuccessResponse,EnqueueTTSRequestError, EnqueueFbxToGltfRequest,EnqueueFbxToGltfRequestSuccessResponse,EnqueueFbxToGltfRequestError, // Media Files + DeleteMediaFileRequest,DeleteMediaFilePathInfo,DeleteMediaFileError, GetMediaFilePathInfo,GetMediaFileError,GetMediaFileSuccessResponse,GetMediaFileModelInfo,MediaFileInfo, // Model Weights GetWeightPathInfo,GetWeightResponse,GetWeightError, diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/delete_media_file.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/delete_media_file.rs index 0a94d091c4..e6cd1dfb84 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/delete_media_file.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/delete_media_file.rs @@ -6,6 +6,7 @@ use actix_web::error::ResponseError; use actix_web::http::StatusCode; use actix_web::web::Path; use log::warn; +use utoipa::ToSchema; use http_server_common::response::serialize_as_json_error::serialize_as_json_error; use mysql_queries::queries::media_files::delete_media_file::{delete_media_file_as_mod, delete_media_file_as_user, undelete_media_file_as_mod, undelete_media_file_as_user}; @@ -16,7 +17,7 @@ use crate::http_server::web_utils::response_success_helpers::simple_json_success use crate::server_state::ServerState; use crate::util::delete_role_disambiguation::{delete_role_disambiguation, DeleteRole}; -#[derive(Deserialize)] +#[derive(Deserialize, ToSchema)] pub struct DeleteMediaFileRequest { set_delete: bool, /// NB: this is only to disambiguate when a user is both a mod and an author. @@ -24,14 +25,14 @@ pub struct DeleteMediaFileRequest { } /// For the URL PathInfo -#[derive(Deserialize)] +#[derive(Deserialize, ToSchema)] pub struct DeleteMediaFilePathInfo { token: MediaFileToken, } // =============== Error Response =============== -#[derive(Debug, Serialize)] +#[derive(Debug, Serialize, ToSchema)] pub enum DeleteMediaFileError { BadInput(String), NotFound, @@ -63,6 +64,20 @@ impl fmt::Display for DeleteMediaFileError { // =============== Handler =============== +#[utoipa::path( + delete, + path = "/v1/media_files/file/{token}", + responses( + (status = 200, description = "Success Delete", body = SimpleGenericJsonSuccess), + (status = 400, description = "Bad input", body = DeleteMediaFileError), + (status = 401, description = "Not authorized", body = DeleteMediaFileError), + (status = 500, description = "Server error", body = DeleteMediaFileError), + ), + params( + ("request" = DeleteMediaFileRequest, description = "Payload for Request"), + ("path" = DeleteMediaFilePathInfo, description = "Path for Request") + ) +)] pub async fn delete_media_file_handler( http_request: HttpRequest, path: Path,