"""FastAPI application factory. Run with uvicorn's factory mode (no import-time DB side effects): uvicorn ams.api.app:create_app --factory --reload """ from __future__ import annotations from fastapi import FastAPI from .. import __version__ from .db import configure, init_db from .routes import diff, games, snapshots def create_app(database_url: str | None = None) -> FastAPI: configure(database_url) init_db() app = FastAPI(title="ams — engine surface catalog", version=__version__) app.include_router(games.router) app.include_router(snapshots.router) app.include_router(diff.router) @app.get("/health", tags=["meta"]) def health() -> dict[str, str]: return {"status": "ok", "version": __version__} return app