feat(config): add database configuration layer with backend detection

Add AppConfig loaded from .env via dotenvy. DATABASE_URL prefix
determines the backend (sqlite:// → SQLite, postgresql:// → PostgreSQL).
ConfigError via thiserror gives clear messages on missing or unknown URLs.
Server logs the chosen backend at startup.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-15 19:44:55 +02:00
parent 18134d6f4b
commit b6d1e22d25
7 changed files with 141 additions and 1 deletions

View File

@@ -21,7 +21,7 @@ async fn main() {
use leptos::view;
use rust_ipam::{
app::{App, Shell},
server::routes::not_found_handler,
server::{config::AppConfig, routes::not_found_handler},
};
use tower_http::services::ServeDir;
@@ -36,6 +36,14 @@ async fn main() {
tracing::info!("Démarrage du serveur Rust IPAM...");
// Charge la configuration depuis .env / variables d'environnement.
// On arrête le serveur immédiatement si la config est invalide — il ne peut
// pas fonctionner sans savoir à quelle base de données se connecter.
let app_config = AppConfig::from_env()
.expect("Erreur de configuration — vérifier le fichier .env");
tracing::info!("Base de données : {} ({})", app_config.backend, app_config.database_url);
// `Some("Cargo.toml")` indique à Leptos de lire la section
// [package.metadata.leptos] du Cargo.toml pour la configuration
// (noms de fichiers, chemins, adresse serveur...).