from fastapi import APIRouter, Depends from sqlalchemy.orm import Session from sqlalchemy import text from datetime import datetime from app.core.deps import get_db from app.core.config import settings router = APIRouter() @router.get("/health") async def health_check(db: Session = Depends(get_db)): """Health check endpoint""" # Check database connectivity try: db.execute(text("SELECT 1")) db_status = "healthy" db_error = None except Exception as e: db_status = "unhealthy" db_error = str(e) # Check external services (simplified) external_services = { "user_service": { "url": settings.EXTERNAL_USER_SERVICE_URL, "status": "healthy" # In production, would make actual health check }, "payment_service": { "url": settings.EXTERNAL_PAYMENT_SERVICE_URL, "status": "healthy" # In production, would make actual health check }, "communication_service": { "url": settings.EXTERNAL_COMMUNICATION_SERVICE_URL, "status": "healthy" # In production, would make actual health check } } # Overall system status overall_status = "healthy" if db_status == "healthy" else "unhealthy" return { "status": overall_status, "timestamp": datetime.utcnow(), "version": settings.PROJECT_VERSION, "database": { "status": db_status, "error": db_error }, "external_services": external_services, "system_info": { "project_name": settings.PROJECT_NAME, "api_version": settings.API_V1_STR } }