add database connection to backend

This commit is contained in:
2025-07-28 00:56:41 +01:00
parent 20f64cd35d
commit 79e43f19df
11 changed files with 1040 additions and 46 deletions

View File

@ -3,11 +3,11 @@ mod healthcheck;
use std::sync::mpsc;
use std::time::Duration;
use crate::config;
use crate::AppState;
use axum::extract::Request;
use axum::routing::get;
use axum::{Router, body::Body};
use http::HeaderName;
use http::{HeaderName, HeaderValue};
use tower::ServiceBuilder;
use tower_http::request_id::{MakeRequestId, RequestId, SetRequestIdLayer};
use tower_http::timeout::TimeoutLayer;
@ -26,13 +26,14 @@ impl MakeRequestId for RequestIdLayer {
}
}
pub fn app(config: &config::Config) -> (Router, mpsc::Receiver<bool>) {
pub fn app(state: &AppState) -> (Router<AppState>, mpsc::Receiver<bool>) {
let (tx, rx) = mpsc::channel();
(
Router::new()
.with_state(state.clone())
.route("/healthcheck", get(healthcheck::healthcheck))
.route("/forever", get(std::future::pending::<()>))
.nest("/admin", admin::router(tx, config))
.nest("/admin", admin::router(tx, state))
.layer(
ServiceBuilder::new()
.layer(SetRequestIdLayer::new(
@ -41,23 +42,15 @@ pub fn app(config: &config::Config) -> (Router, mpsc::Receiver<bool>) {
))
.layer(
TraceLayer::new_for_http().make_span_with(|req: &Request<Body>| {
if let Some(req_id) = req.headers().get("x-request-id") {
tracing::span!(
Level::DEBUG,
"request",
req_id = req_id.to_str().unwrap(),
method = format!("{}", req.method()),
uri = format!("{}", req.uri()),
)
} else {
tracing::span!(
Level::DEBUG,
"request",
req_id = "<missing>",
method = format!("{}", req.method()),
uri = format!("{}", req.uri()),
)
}
let default = HeaderValue::from_static("<missing>");
let req_id = req.headers().get("x-request-id").unwrap_or(&default);
tracing::span!(
Level::DEBUG,
"request",
req_id = req_id.to_str().unwrap(),
method = format!("{}", req.method()),
uri = format!("{}", req.uri()),
)
}),
)
.layer(TimeoutLayer::new(Duration::from_secs(10))),