From 425ec50a5ffe445564034982d24ffb3be82b168b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kha=C3=AFs=20COLIN?= Date: Sun, 26 Oct 2025 13:41:42 +0100 Subject: [PATCH] put router definition into own function --- src/main.rs | 58 ++++++++++++++++++++++++++++------------------------- 1 file changed, 31 insertions(+), 27 deletions(-) diff --git a/src/main.rs b/src/main.rs index 5cb85fe..20d450e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -167,6 +167,36 @@ fn do_migrations(conn: &mut Connection) -> rusqlite::Result<()> { Ok(()) } +fn app(conn: Connection) -> axum::Router { + Router::new() + .route("/", get(root)) + .route("/increase/{id}", post(increase)) + .route("/decrease/{id}", post(decrease)) + .route("/set/{id}/to/{amount}", post(set)) + .layer( + TraceLayer::new_for_http().make_span_with(|request: &Request<_>| { + let matched_path = request + .extensions() + .get::() + .map(MatchedPath::as_str); + let request_id = request + .extensions() + .get::() + .map(ToString::to_string) + .unwrap_or_else(|| "unknown".into()); + info_span!( + "request", + method = ?request.method(), + matched_path, + uri = ?request.uri(), + id = %request_id, + ) + }), + ) + .layer(RequestIdLayer) + .with_state(Arc::new(Mutex::new(conn))) +} + #[tokio::main] async fn main() -> Result<(), std::io::Error> { tracing_subscriber::registry() @@ -197,33 +227,7 @@ async fn main() -> Result<(), std::io::Error> { PreparedStatements::check(&conn).expect("failed to prepare sql statements"); - let app = Router::new() - .route("/", get(root)) - .route("/increase/{id}", post(increase)) - .route("/decrease/{id}", post(decrease)) - .route("/set/{id}/to/{amount}", post(set)) - .layer( - TraceLayer::new_for_http().make_span_with(|request: &Request<_>| { - let matched_path = request - .extensions() - .get::() - .map(MatchedPath::as_str); - let request_id = request - .extensions() - .get::() - .map(ToString::to_string) - .unwrap_or_else(|| "unknown".into()); - info_span!( - "request", - method = ?request.method(), - matched_path, - uri = ?request.uri(), - id = %request_id, - ) - }), - ) - .layer(RequestIdLayer) - .with_state(Arc::new(Mutex::new(conn))); + let app = app(conn); let address = "0.0.0.0:3001"; let listener = tokio::net::TcpListener::bind(address)