create dirs + delete dirs + delete files
This commit is contained in:
24
backend/src/api/warrens/create_directory.rs
Normal file
24
backend/src/api/warrens/create_directory.rs
Normal file
@@ -0,0 +1,24 @@
|
||||
use axum::extract::{Path, State};
|
||||
use serde::Deserialize;
|
||||
use uuid::Uuid;
|
||||
|
||||
use crate::{Result, api::AppState, warrens::Warren};
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
pub(super) struct CreateWarrenDirectoryPath {
|
||||
warren_id: Uuid,
|
||||
rest: String,
|
||||
}
|
||||
|
||||
pub(super) async fn route(
|
||||
State(state): State<AppState>,
|
||||
Path(path): Path<CreateWarrenDirectoryPath>,
|
||||
) -> Result<()> {
|
||||
let warren = Warren::get(state.pool(), &path.warren_id).await?;
|
||||
|
||||
warren
|
||||
.create_directory(state.serve_dir(), path.rest)
|
||||
.await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
31
backend/src/api/warrens/delete_directory.rs
Normal file
31
backend/src/api/warrens/delete_directory.rs
Normal file
@@ -0,0 +1,31 @@
|
||||
use axum::extract::{Path, Query, State};
|
||||
use serde::Deserialize;
|
||||
use uuid::Uuid;
|
||||
|
||||
use crate::{Result, api::AppState, fs::FileType, warrens::Warren};
|
||||
|
||||
#[derive(Deserialize)]
|
||||
pub(super) struct DeleteWarrenDirectoryPath {
|
||||
warren_id: Uuid,
|
||||
rest: String,
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct DeleteWarrenParams {
|
||||
file_type: FileType,
|
||||
}
|
||||
|
||||
pub(super) async fn route(
|
||||
State(state): State<AppState>,
|
||||
Path(path): Path<DeleteWarrenDirectoryPath>,
|
||||
Query(DeleteWarrenParams { file_type }): Query<DeleteWarrenParams>,
|
||||
) -> Result<()> {
|
||||
let warren = Warren::get(state.pool(), &path.warren_id).await?;
|
||||
|
||||
warren
|
||||
.delete_entry(state.serve_dir(), path.rest, file_type)
|
||||
.await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
@@ -1,7 +1,9 @@
|
||||
mod create_directory;
|
||||
mod delete_directory;
|
||||
mod get_warren_path;
|
||||
mod list_warrens;
|
||||
|
||||
use axum::routing::get;
|
||||
use axum::routing::{delete, get, post};
|
||||
|
||||
use crate::server::Router;
|
||||
|
||||
@@ -10,4 +12,6 @@ pub(super) fn router() -> Router {
|
||||
.route("/", get(list_warrens::route))
|
||||
.route("/{warren_id}", get(get_warren_path::route))
|
||||
.route("/{warren_id}/{*rest}", get(get_warren_path::route))
|
||||
.route("/{warren_id}/{*rest}", post(create_directory::route))
|
||||
.route("/{warren_id}/{*rest}", delete(delete_directory::route))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user