add database connection to backend
This commit is contained in:
@ -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))),
|
||||
|
||||
Reference in New Issue
Block a user