45 lines
1.2 KiB
Python
45 lines
1.2 KiB
Python
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"}
|