from fastapi import APIRouter, Depends, Response, status from sqlalchemy.orm import Session from app.core.database import get_db from app.core.security import require_api_key from app.modules.observability.constants import ObservabilityKey, ObservabilityStatus from app.modules.observability.service import ObservabilityService router = APIRouter() @router.get("/health/live") def live( db: Session = Depends(get_db), ) -> dict: _ = db return ObservabilityService(db).live() @router.get("/health/ready") def ready( response: Response, db: Session = Depends(get_db), ) -> dict: result = ObservabilityService(db).ready() if result[ObservabilityKey.STATUS] != ObservabilityStatus.OK: response.status_code = status.HTTP_503_SERVICE_UNAVAILABLE return result @router.get("/metrics", dependencies=[Depends(require_api_key)]) def metrics( db: Session = Depends(get_db), ) -> dict: result = ObservabilityService(db).metrics() db.commit() return result