from contextlib import asynccontextmanager from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from app.api.v1.jobs import router as jobs_router from app.core.config import settings from app.db.base import Base from app.db.session import engine @asynccontextmanager async def lifespan(app: FastAPI): async with engine.begin() as conn: await conn.run_sync(Base.metadata.create_all) yield # Shutdown: Clean up pool await engine.dispose() app = FastAPI( title=settings.PROJECT_NAME, openapi_url=f"{settings.API_V1_STR}/openapi.json", lifespan=lifespan, ) app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) app.include_router(jobs_router, prefix=settings.API_V1_STR) @app.get("/health", tags=["health"]) def health_check(): return {"status": "ok", "project": settings.PROJECT_NAME}