Initial commit - current CRM state
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
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();
|
||||
}
|
||||
Reference in New Issue
Block a user