from contextlib import asynccontextmanager from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from app.routers import jobs, predictions, samples, variants @asynccontextmanager async def lifespan(app: FastAPI): # Warm the model cache here once ml/ is wired in. yield app = FastAPI(title="rarelens API", version="0.1.0", lifespan=lifespan) app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_methods=["*"], allow_headers=["*"] ) app.include_router(samples.router, prefix="/samples", tags=["samples"]) app.include_router(jobs.router, prefix="/jobs", tags=["jobs"]) app.include_router(variants.router, prefix="/variants", tags=["variants"]) app.include_router(predictions.router, prefix="/predictions", tags=["predictions"]) @app.get("/health", tags=["ops"]) async def health() -> dict[str, str]: return {"status": "ok"}