from fastapi import APIRouter, Depends
from sqlalchemy import text
from sqlalchemy.orm import Session

from app.config import settings
from app.db import get_db

router = APIRouter(prefix="/api", tags=["version"])


@router.get("/version")
def get_version(db: Session = Depends(get_db)) -> dict:
    """Build + schema version, for the About dialog and the 'new version' banner.
    Intentionally public (no auth) and cheap: just env-baked build info plus the current
    Alembic migration head (the 'database version'). app_version/git_sha/build_date are
    injected at image build time (see the Dockerfile build-args)."""
    db_revision = db.execute(text("SELECT version_num FROM alembic_version")).scalar()
    return {
        "app_version": settings.app_version,
        "git_sha": settings.git_sha,
        "build_date": settings.build_date or None,
        "db_revision": db_revision,
    }
