init
All checks were successful
/ upload (release) Successful in 1m54s

This commit is contained in:
pavel 2026-02-15 23:16:26 +01:00
commit 9ae6d88c21
24 changed files with 7589 additions and 0 deletions

58
src/main.rs Normal file
View 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();
}