from contextlib import asynccontextmanager from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from app import db from app.api import chat, documents, model from app.config import settings from app.models import HealthOut from app.seed import seed_documents @asynccontextmanager async def lifespan(_: FastAPI): db.init_db() seed_documents() yield app = FastAPI( title=settings.app_name, version="1.0.0", description="RAG API for grounded Egyptian legal research over uploaded PDFs.", lifespan=lifespan, ) app.add_middleware( CORSMiddleware, allow_origins=settings.cors_origins, allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) app.include_router(documents.router) app.include_router(chat.router) app.include_router(model.router) @app.get("/api/health", response_model=HealthOut, tags=["health"]) def health() -> HealthOut: return HealthOut(status="ok", app=settings.app_name, environment=settings.app_env)