import asyncio from datetime import datetime, timezone from core.config import Settings from operations.health.schemas import ComponentCheck, HealthStatus async def check_database_status() -> ComponentCheck: """Checking the primary database connection with a timeout.""" try: # Simulate an async DB call (replace with actual logic) await asyncio.wait_for(asyncio.sleep(0.042), timeout=0.1) return ComponentCheck(name = "postgres", status = "pass", time = datetime.now(timezone.utc), observedValue = 42, observedUnit = "ms") except asyncio.TimeoutError: return ComponentCheck(name = "postgres", status = "fail", time = datetime.now(timezone.utc), output = "Check timed out") except Exception as e: return ComponentCheck(name = "postgres", status = "fail", time = datetime.now(timezone.utc), output = str(e)) async def check_media_server_status() -> ComponentCheck: """Checking the media server connection with a timeout.""" try: # Simulate a successful async queue call await asyncio.wait_for(asyncio.sleep(0.02), timeout=0.05) return ComponentCheck(name = "livekit", status = "pass", time = datetime.now(timezone.utc), observedValue = 20, observedUnit = "ms") except asyncio.TimeoutError: return ComponentCheck(name = "livekit", status = "fail", time = datetime.now(timezone.utc), output = "Check timed out") except Exception as e: return ComponentCheck(name = "livekit", status = "fail", time = datetime.now(timezone.utc), output = str(e)) async def readiness_check() -> bool: """ *Extend readiness_check() as dependencies are added; it must return True/False.* """ # Run all critical checks db = await check_database_status() media_server = await check_media_server_status() # Check if all statuses are 'pass' if db.status == 'pass' and media_server.status == 'pass': return True else: return False async def get_detailed_health(settings: Settings) -> HealthStatus: """ Build detailed health payload aligned with common status formats. status: pass | warn | fail """ # Run all critical checks db = await check_database_status() media_server = await check_media_server_status() # Check if all statuses are 'pass' overall = "pass" if db.status != 'pass' or media_server.status != 'pass': overall = "fail" return HealthStatus(status = overall, version = settings.version, environment = settings.environment, serviceName = settings.service_name, description = settings.title, checks = {"Database": db, "Media Server": media_server})