from contextlib import asynccontextmanager from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from app.config import settings from app.database import init_db from app.routers import auth, communes, content, tariff, votes, households @asynccontextmanager async def lifespan(app: FastAPI): await init_db() yield app = FastAPI( title=settings.APP_NAME, description="Outil de démocratie participative pour la tarification de l'eau", version="0.1.0", lifespan=lifespan, ) app.add_middleware( CORSMiddleware, allow_origins=settings.CORS_ORIGINS, allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) app.include_router(auth.router, prefix="/api/v1/auth", tags=["auth"]) app.include_router(communes.router, prefix="/api/v1/communes", tags=["communes"]) app.include_router(tariff.router, prefix="/api/v1/tariff", tags=["tariff"]) app.include_router(votes.router, prefix="/api/v1", tags=["votes"]) app.include_router(households.router, prefix="/api/v1", tags=["households"]) app.include_router(content.router, prefix="/api/v1/communes", tags=["content"]) @app.get("/api/health") async def health(): return {"status": "ok"}