32 lines
1.8 KiB
SQL
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.
|
|
-- ============================================================
|