from contextlib import asynccontextmanager from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from backend.api.routes import router from backend.config import get_settings from backend.storage.migrations import initialize_storage from backend.watcher.trigger_manager import TriggerManager settings = get_settings() @asynccontextmanager async def lifespan(app: FastAPI): initialize_storage() app.state.trigger_manager = TriggerManager() yield app = FastAPI(title=settings.app_name, lifespan=lifespan) app.add_middleware( CORSMiddleware, allow_origins=settings.allow_origins, allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) app.include_router(router, prefix=settings.api_prefix) @app.get("/health") def health() -> dict[str, str]: return {"status": "ok"}