mirror of
https://github.com/rennf93/roboco.git
synced 2026-08-03 07:23:24 +02:00
51 lines
1.3 KiB
Python
51 lines
1.3 KiB
Python
"""
|
|
Health Check Routes
|
|
|
|
Endpoints for monitoring application health and readiness.
|
|
"""
|
|
|
|
from fastapi import APIRouter, status
|
|
|
|
from roboco.api.schemas.health import HealthResponse, ReadinessResponse
|
|
from roboco.config import settings
|
|
from roboco.services.health import check_database, check_redis
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
@router.get(
|
|
"/health",
|
|
response_model=HealthResponse,
|
|
status_code=status.HTTP_200_OK,
|
|
summary="Health check",
|
|
description="Basic health check endpoint. Returns OK if the service is running.",
|
|
)
|
|
async def health_check() -> HealthResponse:
|
|
"""Check if the service is healthy."""
|
|
return HealthResponse(
|
|
status="ok",
|
|
version=settings.app_version,
|
|
environment=settings.environment,
|
|
)
|
|
|
|
|
|
@router.get(
|
|
"/ready",
|
|
response_model=ReadinessResponse,
|
|
status_code=status.HTTP_200_OK,
|
|
summary="Readiness check",
|
|
description="Check if the service is ready to handle requests.",
|
|
)
|
|
async def readiness_check() -> ReadinessResponse:
|
|
"""Check if all dependencies are ready."""
|
|
db_status, db_ok = await check_database()
|
|
redis_status, redis_ok = await check_redis()
|
|
|
|
overall = "ok" if (db_ok and redis_ok) else "degraded"
|
|
|
|
return ReadinessResponse(
|
|
status=overall,
|
|
database=db_status,
|
|
redis=redis_status,
|
|
)
|