first commit
This commit is contained in:
41
src/main.rs
Normal file
41
src/main.rs
Normal file
@@ -0,0 +1,41 @@
|
||||
use axum::Router;
|
||||
use dotenvy::dotenv;
|
||||
use std::net::SocketAddr;
|
||||
|
||||
mod api;
|
||||
mod core;
|
||||
mod db;
|
||||
mod errors;
|
||||
mod schemas;
|
||||
mod services;
|
||||
mod utils;
|
||||
|
||||
use crate::core::config::Config;
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() -> anyhow::Result<()> {
|
||||
dotenv().ok();
|
||||
tracing_subscriber::fmt::init();
|
||||
|
||||
let config = Config::from_env()?;
|
||||
|
||||
// Initialize DB
|
||||
let db = db::connect(&config).await?;
|
||||
|
||||
// Shared app state
|
||||
let state = std::sync::Arc::new(crate::api::deps::AppState { db: db.clone(), cfg: config.clone() });
|
||||
|
||||
// Build router with /api/v1 prefix and provide state via Extension
|
||||
let api_router = Router::new()
|
||||
.merge(api::routers::auth::router())
|
||||
.merge(api::routers::users::router());
|
||||
|
||||
let app = Router::new().nest("/api/v1", api_router).layer(axum::Extension(state));
|
||||
|
||||
let addr = SocketAddr::from((config.server_host.parse::<std::net::IpAddr>()?, config.server_port));
|
||||
tracing::info!("Starting server on {}", addr);
|
||||
let listener = tokio::net::TcpListener::bind(&addr).await?;
|
||||
axum::serve(listener, app).await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
Reference in New Issue
Block a user