This repository has been archived on 2024-08-23. You can view files and clone it, but cannot push or open issues or pull requests.
2024-08-04 12:34:46 +03:00

34 lines
849 B
Rust

use crate::prelude::*;
#[derive(Deserialize, Debug)]
pub struct Params {
folder_id: Uuid,
}
pub async fn delete(
State(state): State<AppState>,
claims: Claims,
Json(params): Json<Params>,
) -> Result<(), StatusCode> {
let root = db::folder::get_root(claims.user_id, &state.pool)
.await
.handle_internal()?;
if params.folder_id == root {
return Err(StatusCode::BAD_REQUEST);
}
db::folder::get_permissions(params.folder_id, claims.user_id, &state.pool)
.await
.handle_internal()?
.can_write_guard()?;
let storage = &state.storage;
db::folder::delete(params.folder_id, &state.pool)
.try_for_each_concurrent(5, |file| async move {
let _ = storage.delete(file).await;
Ok(())
})
.await
.handle_internal()
}