commit
9ae6d88c21
24 changed files with 7589 additions and 0 deletions
58
src/main.rs
Normal file
58
src/main.rs
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
mod auth;
|
||||
mod config;
|
||||
mod db;
|
||||
mod entities;
|
||||
mod handlers;
|
||||
mod routes;
|
||||
|
||||
use crate::auth::{AppState, OidcClient};
|
||||
use crate::config::Config;
|
||||
use crate::routes::create_router;
|
||||
use migration::MigratorTrait;
|
||||
use std::net::SocketAddr;
|
||||
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() {
|
||||
// Initialize tracing
|
||||
tracing_subscriber::registry()
|
||||
.with(tracing_subscriber::fmt::layer())
|
||||
.init();
|
||||
|
||||
// Load configuration
|
||||
let config = Config::from_env();
|
||||
|
||||
// Connect to database
|
||||
let db = db::connect(&config)
|
||||
.await
|
||||
.expect("Failed to connect to database");
|
||||
tracing::info!("Connected to database");
|
||||
|
||||
// Run migrations
|
||||
migration::Migrator::up(&db, None)
|
||||
.await
|
||||
.expect("Failed to run migrations");
|
||||
tracing::info!("Migrations completed");
|
||||
|
||||
// Initialize OIDC client
|
||||
let oidc = OidcClient::new(&config)
|
||||
.await
|
||||
.expect("Failed to initialize OIDC client");
|
||||
|
||||
// Create AppState
|
||||
let state = AppState {
|
||||
db: db.clone(),
|
||||
oidc,
|
||||
};
|
||||
|
||||
// Create router
|
||||
let app = create_router(state)
|
||||
.layer(tower_http::cors::CorsLayer::permissive())
|
||||
.fallback_service(tower_http::services::ServeDir::new("static"));
|
||||
|
||||
// Start server
|
||||
let addr = SocketAddr::from(([127, 0, 0, 1], config.port));
|
||||
tracing::info!("listening on {}", addr);
|
||||
let listener = tokio::net::TcpListener::bind(&addr).await.unwrap();
|
||||
axum::serve(listener, app).await.unwrap();
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue