refactor file system operations

the most notable improvement is that uploads are now using streams so
they no longer require the entire file to be stored in memory
This commit is contained in:
2025-07-28 22:38:28 +02:00
parent bb79ea56f8
commit 23fdd55612
36 changed files with 1567 additions and 2088 deletions

View File

@@ -1,17 +1,16 @@
mod create_warren_directory;
mod delete_warren_directory;
mod delete_warren_file;
mod fetch_file;
mod fetch_warren;
mod list_warren_files;
mod list_warrens;
mod rename_warren_entry;
mod upload_warren_files;
mod warren_cat;
mod warren_ls;
mod warren_mkdir;
mod warren_move;
mod warren_rm;
use axum::{
Router,
extract::DefaultBodyLimit,
routing::{delete, get, patch, post},
routing::{get, post},
};
use crate::{
@@ -20,30 +19,28 @@ use crate::{
};
use fetch_warren::fetch_warren;
use list_warren_files::list_warren_files;
use list_warrens::list_warrens;
use warren_ls::list_warren_files;
use create_warren_directory::create_warren_directory;
use delete_warren_directory::delete_warren_directory;
use warren_mkdir::create_warren_directory;
use warren_rm::warren_rm;
use delete_warren_file::delete_warren_file;
use fetch_file::fetch_file;
use rename_warren_entry::rename_warren_entry;
use upload_warren_files::upload_warren_files;
use upload_warren_files::warren_save;
use warren_cat::fetch_file;
use warren_move::warren_move;
pub fn routes<WS: WarrenService, AS: AuthService>() -> Router<AppState<WS, AS>> {
Router::new()
.route("/", get(list_warrens))
.route("/", post(fetch_warren))
.route("/files/fetch", get(fetch_file))
.route("/files", post(list_warren_files))
.route("/files/directory", post(create_warren_directory))
.route("/files/directory", delete(delete_warren_directory))
.route("/files/cat", get(fetch_file))
.route("/files/ls", post(list_warren_files))
.route("/files/mkdir", post(create_warren_directory))
.route("/files/rm", post(warren_rm))
.route(
"/files/upload",
"/files/save",
// 1073741824 bytes = 1GB
post(upload_warren_files).route_layer(DefaultBodyLimit::max(1073741824)),
post(warren_save).route_layer(DefaultBodyLimit::max(1073741824)),
)
.route("/files/file", delete(delete_warren_file))
.route("/files/rename", patch(rename_warren_entry))
.route("/files/mv", post(warren_move))
}