from django_prometheus import exports
from ninja import Router
from ninja.errors import HttpError

from apps.users.models import User
from glitchtip.api.authentication import AuthHttpRequest

from .metrics import compile_metrics

router = Router()


@router.get("observability/django/")
async def django_prometheus_metrics(request: AuthHttpRequest):
    if not await User.objects.filter(id=request.auth.user_id, is_staff=True).aexists():
        raise HttpError(403, "is_staff required")
    await compile_metrics()
    return exports.ExportToDjangoView(request)