feat(backend): expose GET /api/v1/alerts
Consultation des alertes de consommation, filtrable par site_id et severity a l'identique du contrat GET /alerts de l'API Mock. Reprend le gabarit endpoints -> services -> repositories -> models pose par sites, sur la table alert deja creee par la revision Alembic e6d2026091501. Generalise aussi le garde-fou OpenAPI du 403 (ROUTES_A_ROLE) au-dela du seul tag users, pour que l'ajout d'alerts a la liste des routes protegees par role soit reellement verifie. Closes #59
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
from fastapi import APIRouter
|
||||
|
||||
from app.api.deps import AlertServiceDep, LecteurDep
|
||||
from app.api.openapi import REPONSE_VALIDATION
|
||||
from app.schemas.alert import AlertResponse, AlertSeverity
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
@router.get(
|
||||
"",
|
||||
response_model=list[AlertResponse],
|
||||
summary="Liste les alertes",
|
||||
responses=REPONSE_VALIDATION,
|
||||
)
|
||||
async def list_alerts(
|
||||
_: LecteurDep,
|
||||
service: AlertServiceDep,
|
||||
site_id: str | None = None,
|
||||
severity: AlertSeverity | None = None,
|
||||
) -> list[AlertResponse]:
|
||||
alertes = await service.list_all(site_id=site_id, severity=severity)
|
||||
return [AlertResponse.model_validate(alerte) for alerte in alertes]
|
||||
Reference in New Issue
Block a user