""" Application FastAPI principale. """ from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from .config import settings from .database import init_db, get_db from .routes import router from .init_blockchain import initialize_elections_blockchain # Initialiser la base de données init_db() # Initialiser la blockchain avec les élections existantes try: db = next(get_db()) initialize_elections_blockchain(db) db.close() except Exception as e: print(f"Warning: Failed to initialize blockchain on startup: {e}") # Créer l'application FastAPI app = FastAPI( title=settings.app_name, version=settings.app_version, debug=settings.debug ) # Configuration CORS app.add_middleware( CORSMiddleware, allow_origins=["*"], # À restreindre en production allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # Inclure les routes app.include_router(router) @app.get("/health") async def health_check(): """Vérifier l'état de l'application""" return {"status": "ok", "version": settings.app_version} @app.get("/") async def root(): """Endpoint root""" return { "name": settings.app_name, "version": settings.app_version, "docs": "/docs" }