Files
CRM_backup/backend/src/main.rs
T

57 lines
1.1 KiB
Rust

mod auth;
mod config;
mod database;
mod dto;
mod handlers;
mod middleware;
mod models;
mod repositories;
mod routes;
mod services;
use std::net::SocketAddr;
use axum::Router;
use sqlx::PgPool;
use tower_http::trace::TraceLayer;
use crate::config::AppConfig;
use crate::routes::create_router;
#[derive(Clone)]
pub struct AppState {
pub pool: PgPool,
pub config: AppConfig,
}
#[tokio::main]
async fn main() {
dotenvy::dotenv().ok();
tracing_subscriber::fmt::init();
let config = AppConfig::from_env();
let pool = database::init_db_pool(&config.database_url).await;
tracing::info!("Database connection established");
let state = AppState {
pool,
config: config.clone(),
};
let app: Router = create_router(state)
.layer(TraceLayer::new_for_http())
.layer(middleware::cors_layer());
let addr: SocketAddr = format!("{}:{}", config.host, config.port)
.parse()
.expect("Invalid host or port");
tracing::info!("CRM API server starting on {}", addr);
let listener = tokio::net::TcpListener::bind(addr).await.unwrap();
axum::serve(listener, app).await.unwrap();
}