import os from contextlib import asynccontextmanager from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from app.config import CORS_ORIGINS, UPLOAD_DIR from app.database import create_db_and_tables @asynccontextmanager async def lifespan(app: FastAPI): os.makedirs(UPLOAD_DIR, exist_ok=True) import app.models # noqa — enregistre tous les modèles avant create_all create_db_and_tables() from app.seed import run_seed run_seed() yield app = FastAPI(title="Jardin API", lifespan=lifespan) app.add_middleware( CORSMiddleware, allow_origins=CORS_ORIGINS, allow_methods=["*"], allow_headers=["*"], ) from app.routers import gardens, varieties, plantings, tasks, settings, media app.include_router(gardens.router, prefix="/api") app.include_router(varieties.router, prefix="/api") app.include_router(plantings.router, prefix="/api") app.include_router(tasks.router, prefix="/api") app.include_router(settings.router, prefix="/api") app.include_router(media.router, prefix="/api") # Note: le mount StaticFiles sera ajouté ici dans Task 6 @app.get("/api/health") def health(): return {"status": "ok"}