use axum::{ // http::StatusCode, // routing::{get, post}, // Json, Router, }; use serde::{Deserialize, Serialize}; use tracing::info; use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt}; // Project modules mod category; mod model; mod util; // Passed App State #[derive(Clone)] pub struct AppState{ db: deadpool_diesel::postgres::Pool, } #[tokio::main] async fn main() { dotenvy::dotenv().unwrap(); tracing_subscriber::registry().with(tracing_subscriber::fmt::layer()).init(); // initialize db connection let db_url = std::env::var("DATABASE_URL").unwrap(); let manager = deadpool_diesel::postgres::Manager::new(db_url, deadpool_diesel::Runtime::Tokio1); let pool = deadpool_diesel::postgres::Pool::builder(manager) .build() .unwrap(); let shared_state = AppState {db: pool,}; // Register routers let app = Router::new() // V1 apis .nest("/api/v1/category", category::handler::get_nest_handlers()) .with_state(shared_state); let listener = tokio::net::TcpListener::bind("0.0.0.0:8987").await.unwrap(); info!("starting server on 0.0.0.0:8987"); axum::serve(listener, app).await.unwrap(); }