import os import time from typing import Any, Dict from fastapi import APIRouter, Depends from sqlalchemy.orm import Session from app.db.session import get_db router = APIRouter() @router.get("/") async def health_check(db: Session = Depends(get_db)) -> Dict[str, Any]: """ Health check endpoint for the Inventory Management System API. Checks database connectivity and returns status. """ start_time = time.time() health_data = { "status": "healthy", "timestamp": start_time, "components": { "database": {"status": "unhealthy", "details": "Could not connect to database"}, "api": {"status": "healthy", "details": "API is operational"}, }, "environment": os.environ.get("ENVIRONMENT", "development"), } # Check database connectivity try: # Try to execute a simple query to check database connectivity db.execute("SELECT 1") health_data["components"]["database"] = { "status": "healthy", "details": "Database connection successful", } except Exception as e: health_data["status"] = "unhealthy" health_data["components"]["database"] = {"status": "unhealthy", "details": str(e)} # Calculate response time health_data["response_time_ms"] = round((time.time() - start_time) * 1000, 2) return health_data