Files
Omika/infra/postgresql/016_diagnostics_event_delete.sql
T
2026-10-23 18:46:50 +02:00

32 lines
1.8 KiB
SQL

-- ============================================================
-- 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 <base> -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.
-- ============================================================