use axum::routing::get;
use axum::Router;
use larust_core::{Application, GracefulShutdown};
use std::time::Duration;
async fn slow() -> &'static str {
tokio::time::sleep(Duration::from_secs(2)).await;
"slow-ok"
}
async fn fast() -> &'static str {
"fast-ok"
}
fn config() -> serde_json::Value {
let mut value = serde_json::json!({});
if let Ok(port) = std::env::var("APP_PORT").unwrap_or_default().parse::<u16>() {
value["app_port"] = serde_json::json!(port);
}
value
}
#[tokio::main]
async fn main() -> Result<(), larust_core::AppError> {
let app = Application::new(config)?;
let router = Router::new()
.route("/slow", get(slow))
.route("/fast", get(fast));
app.router(router)
.with_graceful_shutdown(GracefulShutdown {
drain_timeout: Duration::from_secs(8),
..Default::default()
})
.serve()
.await
}