24 lines
899 B
Python
24 lines
899 B
Python
|
|
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,
|
||
|
|
}
|