chore: scaffold axum server with in-memory CRUD, auth stub and tracing

This commit is contained in:
2026-04-19 16:03:04 +03:00
parent 132de93600
commit 90c9b9d6ff
10 changed files with 1756 additions and 13 deletions

View File

@@ -1,9 +1,49 @@
use axum::{Router, routing::get};
mod error;
mod model;
mod web;
use anyhow::Result;
use axum::{Router, middleware, response::Response};
use tower_cookies::CookieManagerLayer;
use tower_http::services::ServeDir;
use tracing::info;
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
use crate::{
model::FileController,
web::{routes_file::routes_file, routes_health::routes_health, routes_login::routes_login},
};
#[tokio::main]
async fn main() {
let app = Router::new().route("/", get(|| async { "Hello Async!\n"}));
let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap();
axum::serve(listener, app).await.unwrap();
async fn main() -> Result<()> {
tracing_subscriber::registry()
.with(
tracing_subscriber::EnvFilter::try_from_default_env().unwrap_or_else(|_| {
format!("{}=info,tower_http=info", env!("CARGO_CRATE_NAME")).into()
}),
)
.with(tracing_subscriber::fmt::layer())
.init();
let file_controller = FileController::new().await?;
let app = Router::new()
.nest("/api", routes_file(file_controller))
.merge(routes_health())
.merge(routes_login())
.layer(middleware::map_response(main_response_mapper))
.layer(CookieManagerLayer::new())
.fallback_service(ServeDir::new("./"));
let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await?;
info!("listening on {}", listener.local_addr().unwrap());
axum::serve(listener, app).await?;
Ok(())
}
async fn main_response_mapper(res: Response) -> Response {
info!("response mapper: {}", res.status());
res
}