diff --git a/src/cartsnitch_api/database.py b/src/cartsnitch_api/database.py index 3c6043c..e9348fb 100644 --- a/src/cartsnitch_api/database.py +++ b/src/cartsnitch_api/database.py @@ -11,6 +11,7 @@ engine = create_async_engine( echo=False, pool_size=10, max_overflow=20, + pool_timeout=30, pool_pre_ping=True, pool_recycle=3600, ) diff --git a/src/cartsnitch_api/routes/health.py b/src/cartsnitch_api/routes/health.py index 0574b10..cef1a6c 100644 --- a/src/cartsnitch_api/routes/health.py +++ b/src/cartsnitch_api/routes/health.py @@ -1,16 +1,23 @@ """Health check and error metrics endpoints.""" from fastapi import APIRouter, Depends +from sqlalchemy import text +from sqlalchemy.ext.asyncio import AsyncSession from cartsnitch_api.auth.dependencies import verify_service_key +from cartsnitch_api.database import get_db from cartsnitch_api.middleware.error_handler import get_error_monitor router = APIRouter(tags=["health"]) @router.get("/health") -async def health(): - return {"status": "ok"} +async def health(db: AsyncSession = Depends(get_db)): + try: + await db.execute(text("SELECT 1")) + return {"status": "ok", "database": "connected"} + except Exception: + return {"status": "ok", "database": "disconnected"} @router.get("/internal/error-stats", dependencies=[Depends(verify_service_key)])