mkv/src/lib.rs
2026-03-07 13:23:38 +01:00

41 lines
1.1 KiB
Rust

pub mod db;
pub mod error;
pub mod hasher;
pub mod server;
pub mod rebalance;
pub mod rebuild;
use std::sync::Arc;
pub struct Args {
pub db_path: String,
pub volumes: Vec<String>,
pub replicas: usize,
}
pub fn build_app(args: &Args) -> axum::Router {
if let Some(parent) = std::path::Path::new(&args.db_path).parent() {
std::fs::create_dir_all(parent).unwrap_or_else(|e| {
eprintln!("Failed to create database directory: {e}");
std::process::exit(1);
});
}
let state = server::AppState {
db: db::Db::new(&args.db_path),
volumes: Arc::new(args.volumes.clone()),
replicas: args.replicas,
http: reqwest::Client::new(),
};
axum::Router::new()
.route("/", axum::routing::get(server::list_keys))
.route(
"/{*key}",
axum::routing::get(server::get_key)
.put(server::put_key)
.delete(server::delete_key)
.head(server::head_key),
)
.with_state(state)
}