26 lines
850 B
Python
26 lines
850 B
Python
from typing import Any
|
|
|
|
from fastapi import APIRouter, FastAPI, status
|
|
|
|
from ...views import ApiMetadata, CacheStatistics, HealthCheckResponse
|
|
|
|
|
|
def bootstrap_meta_endpoints(app: FastAPI, func: Any, metadata: ApiMetadata) -> None:
|
|
router = APIRouter(
|
|
tags=["meta"],
|
|
)
|
|
|
|
@router.get("/health", status_code=status.HTTP_200_OK)
|
|
def check_health() -> HealthCheckResponse:
|
|
hits, misses, maxsize, cache_size = func.cache_info()
|
|
cache_statistics = CacheStatistics(
|
|
hits=hits, misses=misses, size=cache_size, max_size=maxsize
|
|
)
|
|
|
|
return HealthCheckResponse(is_healthy=True, cache_statistics=cache_statistics)
|
|
|
|
@router.get("/version", response_model=ApiMetadata, status_code=status.HTTP_200_OK)
|
|
def get_version() -> ApiMetadata:
|
|
return metadata
|
|
|
|
app.include_router(router)
|