2024-07-09 17:06:20 +00:00
|
|
|
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();
|
2023-10-14 10:49:05 +08:00
|
|
|
}
|