mod db; mod error; mod handlers; mod models; #[cfg(test)] mod tests; use axum::{ Router, routing::{delete, get, post, put}, }; use dotenvy::dotenv; use sqlx::PgPool; fn router(pool: PgPool) -> Router { Router::new() .route("/", get(handlers::index)) .route("/all", get(handlers::all)) .route("/add", post(handlers::add)) .route("/search", get(handlers::search)) .route("/units", get(handlers::units)) .route("/metric_types", get(handlers::metric_types)) .route("/measurement/{id}", get(handlers::measurement_by_id)) .route("/delete/{id}", delete(handlers::delete)) .route("/update/{id}", put(handlers::update)) .with_state(pool) } #[tokio::main] async fn main() -> anyhow::Result<()> { tracing_subscriber::fmt::init(); dotenv().ok(); let pool = db::connect().await?; let app = router(pool); let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await?; tracing::info!("listening at 0.0.0.0:3000"); axum::serve(listener, app).await?; Ok(()) }