"""Avalanche Forecast Guidance API."""

from contextlib import asynccontextmanager

from fastapi import APIRouter, FastAPI

from . import engine
from .db import close_pool, pool
from .routers import ai, auth, centers, forecasts, guidance, phrases, runs, settings, stats, style


@asynccontextmanager
async def lifespan(app: FastAPI):
    yield
    close_pool()


app = FastAPI(
    title="Avalanche Forecast Guidance API",
    lifespan=lifespan,
    docs_url="/api/docs",
    redoc_url=None,
    openapi_url="/api/openapi.json",
)

api = APIRouter(prefix="/api")


@api.get("/health")
def health():
    with pool().connection() as conn:
        conn.execute("SELECT 1")
    return {"status": "ok", "engine_version": engine.ENGINE_VERSION}


for module in (auth, centers, runs, forecasts, phrases, style, stats, guidance, ai, settings):
    api.include_router(module.router)

app.include_router(api)
