import logging import httpx from fastapi import APIRouter, Depends from sqlalchemy import text from sqlalchemy.orm import Session from app.config import settings from app.db import get_db logger = logging.getLogger(__name__) router = APIRouter() def _check_database(db: Session) -> str: try: db.execute(text("SELECT 1")) return "ok" except Exception: logger.exception("Database healthcheck failed") return "error" def _check_metube() -> str: try: response = httpx.get(settings.metube_api_base_url, timeout=5) if response.status_code < 500: return "ok" return "error" except Exception: logger.warning("MeTube healthcheck failed", exc_info=True) return "error" @router.get("/health") def health(db: Session = Depends(get_db)) -> dict: return { "status": "ok", "database": _check_database(db), "metube": _check_metube(), }