"""Prometheus metrics endpoint for BanGUI.

Exposes collected metrics in Prometheus text format at GET /metrics.
"""

from __future__ import annotations

from app.utils.logging_compat import get_logger
from fastapi import APIRouter
from starlette.responses import Response

from app.utils.metrics import get_metrics, get_metrics_content_type

log = get_logger(__name__)

router = APIRouter()


@router.get(
    "/metrics",
    tags=["observability"],
    summary="Prometheus metrics endpoint",
    description="Exposes application metrics in Prometheus text format (OpenMetrics)",
    include_in_schema=False,
)
async def get_application_metrics() -> Response:
    """Get Prometheus metrics.
    
    Returns:
        Prometheus-formatted metrics as plain text.
    """
    log.debug("metrics_endpoint_accessed")
    return Response(
        content=get_metrics(),
        media_type=get_metrics_content_type(),
    )
