24 lines
684 B
Python
24 lines
684 B
Python
from fastapi import APIRouter, Request
|
|
from pydantic import BaseModel
|
|
|
|
router = APIRouter(tags=["health"])
|
|
|
|
|
|
class HealthResponse(BaseModel):
|
|
status: str
|
|
environment: str
|
|
components: dict[str, str]
|
|
|
|
|
|
@router.get("/health", response_model=HealthResponse)
|
|
def health(request: Request) -> HealthResponse:
|
|
database_status = request.app.state.container.database_status.get()
|
|
return HealthResponse(
|
|
status="ok" if database_status.available else "degraded",
|
|
environment=request.app.state.settings.environment,
|
|
components={
|
|
"process": "ok",
|
|
"database": "ok" if database_status.available else "unavailable",
|
|
},
|
|
)
|