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.
This commit is contained in:
2026-01-14 10:01:34 +01:00
parent 67c3affddb
commit 9ef8a42fd4

View File

@@ -46,6 +46,10 @@ async fn auth(req: Request<axum::body::Body>, next: Next) -> Result<Response, St
Ok(next.run(req).await)
}
async fn health_check() -> 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)),
)
}