diff --git a/data/auth.sqlite b/data/auth.sqlite index ee5f56c..346595f 100644 Binary files a/data/auth.sqlite and b/data/auth.sqlite differ diff --git a/markbase-core/src/server.rs b/markbase-core/src/server.rs index 40469ce..43acfef 100644 --- a/markbase-core/src/server.rs +++ b/markbase-core/src/server.rs @@ -2821,45 +2821,54 @@ async fn run_backup_handler() -> Json { } } -async fn list_snapshots_handler() -> Json> { +async fn list_snapshots_handler(Query(params): Query>) -> Json> { + let root = params.get("root").map(|p| PathBuf::from(p)).unwrap_or_else(|| PathBuf::from("/data")); let backend = LocalFs::new(); - let root = PathBuf::from("/data"); match backend.list_snapshots(&root) { Ok(list) => Json(list), Err(_) => Json(Vec::new()), } } -async fn create_snapshot_handler(Path(name): Path) -> Json { +async fn create_snapshot_handler( + Path(name): Path, + Query(params): Query>, +) -> Json { + let root = params.get("root").map(|p| PathBuf::from(p)).unwrap_or_else(|| PathBuf::from("/data")); let backend = LocalFs::new(); - let root = PathBuf::from("/data"); match backend.create_snapshot(&root, &name) { Ok(_) => Json(serde_json::json!({"success": true, "name": name})), Err(e) => Json(serde_json::json!({"success": false, "error": e.to_string()})), } } -async fn delete_snapshot_handler(Path(name): Path) -> Json { +async fn delete_snapshot_handler( + Path(name): Path, + Query(params): Query>, +) -> Json { + let root = params.get("root").map(|p| PathBuf::from(p)).unwrap_or_else(|| PathBuf::from("/data")); let backend = LocalFs::new(); - let root = PathBuf::from("/data"); match backend.delete_snapshot(&root, &name) { Ok(_) => Json(serde_json::json!({"success": true, "name": name})), Err(e) => Json(serde_json::json!({"success": false, "error": e.to_string()})), } } -async fn restore_snapshot_handler(Path(name): Path) -> Json { +async fn restore_snapshot_handler( + Path(name): Path, + Query(params): Query>, +) -> Json { + let root = params.get("root").map(|p| PathBuf::from(p)).unwrap_or_else(|| PathBuf::from("/data")); let backend = LocalFs::new(); - let root = PathBuf::from("/data"); match backend.restore_snapshot(&root, &name) { Ok(_) => Json(serde_json::json!({"success": true, "name": name})), Err(e) => Json(serde_json::json!({"success": false, "error": e.to_string()})), } } -async fn get_storage_stats_handler() -> Json { +async fn get_storage_stats_handler(Query(params): Query>) -> Json { + let root = params.get("root").map(|p| PathBuf::from(p)).unwrap_or_else(|| PathBuf::from("/data")); let backend = LocalFs::new(); - let root = PathBuf::from("/data"); match backend.stat(&root) { Ok(stat) => Json(StorageStatsResponse { total_size: stat.size,