From 9ef8a42fd45f8a6a7105f7b8102ddc02b72ca792 Mon Sep 17 00:00:00 2001 From: Bulat Kurbanov Date: Wed, 14 Jan 2026 10:01:34 +0100 Subject: [PATCH] Mount health router and fix client ownership Add an async handler that returns StatusCode::OK and attach it via a separate health_router. Clone the Postgres client for the main app router to avoid ownership/move issues when reusing the pool. --- src/views/mod.rs | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/views/mod.rs b/src/views/mod.rs index cc71c51..26199e1 100644 --- a/src/views/mod.rs +++ b/src/views/mod.rs @@ -46,6 +46,10 @@ async fn auth(req: Request, next: Next) -> Result StatusCode { + StatusCode::OK +} + pub async fn get_router() -> Router { let client = get_postgres_pool().await; @@ -58,15 +62,23 @@ pub async fn get_router() -> Router { .nest("/api/v1/books", get_books_router().await) .nest("/api/v1/sequences", get_sequences_router().await) .layer(middleware::from_fn(auth)) - .layer(Extension(client)) + .layer(Extension(client.clone())) .layer(prometheus_layer); + let health_router = Router::new() + .route("/health", get(health_check)) + .layer(Extension(client)); + let metric_router = Router::new().route("/metrics", get(|| async move { metric_handle.render() })); - Router::new().merge(app_router).merge(metric_router).layer( - TraceLayer::new_for_http() - .make_span_with(trace::DefaultMakeSpan::new().level(Level::INFO)) - .on_response(trace::DefaultOnResponse::new().level(Level::INFO)), - ) + Router::new() + .merge(app_router) + .merge(health_router) + .merge(metric_router) + .layer( + TraceLayer::new_for_http() + .make_span_with(trace::DefaultMakeSpan::new().level(Level::INFO)) + .on_response(trace::DefaultOnResponse::new().level(Level::INFO)), + ) }