create dirs + delete dirs + delete files

This commit is contained in:
2025-07-13 03:18:22 +02:00
parent 18be642181
commit b4731f6f81
53 changed files with 1056 additions and 59 deletions

View 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(())
}

View 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(())
}

View File

@@ -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))
}