Files
klog/backend/src/main.rs
2026-04-29 17:57:41 +09:00

43 lines
1.1 KiB
Rust

mod auth;
mod config;
mod handlers;
mod storage;
use std::sync::Arc;
use axum::{
routing::{delete, get, post},
Router,
};
pub struct AppState {
pub config: config::Config,
pub http_client: reqwest::Client,
}
#[tokio::main]
async fn main() {
tracing_subscriber::fmt()
.with_env_filter(tracing_subscriber::EnvFilter::from_default_env())
.init();
let config = config::Config::from_env();
let port = config.port;
let state = Arc::new(AppState {
config,
http_client: reqwest::Client::new(),
});
let app = Router::new()
.route("/admin/files", get(handlers::list_all_files_meta))
.route("/admin/files/get", post(handlers::download_files))
.route("/admin/files", delete(handlers::delete_files))
.route("/files", post(handlers::upload_file))
.with_state(state);
let addr = format!("0.0.0.0:{port}");
let listener = tokio::net::TcpListener::bind(&addr).await.unwrap();
tracing::info!("Listening on {addr}");
axum::serve(listener, app).await.unwrap();
}