-- ============================================================ -- Omika Diagnostic Center -- 016_diagnostics_event_delete.sql -- Erreurs : autorise la suppression d'un groupe d'erreurs complet (V2). -- ============================================================ -- TO RUN ON SRV-OMIKA as PostgreSQL superuser (e.g. psql -U postgres -d -f 016_...), -- AFTER 003 (rôles owner/worker/web). -- -- Guarantees : -- - PostgreSQL 18 compatible. -- - Idempotent : re-running is a no-op (GRANT is idempotent). -- - Non destructive : NO DROP, NO DELETE/TRUNCATE, no data removal. -- - NO password, NO secret. -- -- Jusqu'ici le rôle Web (omika_diagnostics_web) n'avait que SELECT sur -- diagnostic_event (migration 003) : il lisait les événements mais ne pouvait jamais en -- supprimer. La V2 ajoute, sur la page /Erreurs, un bouton « Supprimer le groupe » qui -- supprime TOUTES les occurrences d'un groupe d'erreurs (signature normalisée : -- event_code + error_code/exception_type/component). Le DELETE est exécuté par le Web, -- donc on accorde le privilège DELETE au seul rôle Web (moindre privilège). -- -- Le Worker (omika_diagnostics_worker) conserve déjà SELECT + DELETE (migration 004, -- rétention par lots bornés) ; son périmètre est inchangé. L'API n'a AUCUN droit de -- suppression. Le DELETE du Web est borné par la signature du groupe (jamais un DELETE -- massif non filtré) et restreint aux niveaux d'erreur réels par le code applicatif. -- ============================================================ GRANT DELETE ON TABLE diagnostic_event TO omika_diagnostics_web; -- ============================================================ -- END 016. Ordre serveur : 001 -> 002 -> ... -> 015 -> 016. -- ============================================================