- Structure complète: utilisateurs, parents, assmat, enfants, contrats - Migrations SQL avec enums et contraintes - Seed: 1 super_admin (admin@ptits-pas.fr) - Mot de passe: 4dm1n1strateur (hash bcrypt)
151 lines
6.1 KiB
PL/PgSQL
151 lines
6.1 KiB
PL/PgSQL
-- =============================================
|
|
-- 05_triggers.sql : Timestamps automatiques
|
|
-- - Ajoute (si absent) cree_le DEFAULT now() et modifie_le DEFAULT now()
|
|
-- - Crée un trigger BEFORE UPDATE pour mettre à jour modifie_le
|
|
-- - Idempotent (DROP TRIGGER IF EXISTS / IF NOT EXISTS)
|
|
-- A exécuter après 01_init.sql, 02_indexes.sql, 03_checks.sql
|
|
-- =============================================
|
|
|
|
-- 1) Fonction unique de mise à jour du timestamp
|
|
CREATE OR REPLACE FUNCTION set_modifie_le()
|
|
RETURNS TRIGGER AS $$
|
|
BEGIN
|
|
NEW.modifie_le := NOW();
|
|
RETURN NEW;
|
|
END;
|
|
$$ LANGUAGE plpgsql;
|
|
|
|
-- Helper macro-like: pour chaque table, s'assurer des colonnes & trigger
|
|
-- (on ne peut pas faire de macro, donc on répète pour chaque table)
|
|
|
|
-- Liste des tables concernées :
|
|
-- utilisateurs, assistantes_maternelles, parents, enfants, enfants_parents,
|
|
-- dossiers, messages, contrats, avenants_contrats, evenements,
|
|
-- signalements_bugs, uploads, notifications, validations
|
|
|
|
-- ========== UTILISATEURS
|
|
ALTER TABLE utilisateurs
|
|
ADD COLUMN IF NOT EXISTS cree_le TIMESTAMP DEFAULT NOW(),
|
|
ADD COLUMN IF NOT EXISTS modifie_le TIMESTAMP DEFAULT NOW();
|
|
DROP TRIGGER IF EXISTS trg_utilisateurs_set_modifie_le ON utilisateurs;
|
|
CREATE TRIGGER trg_utilisateurs_set_modifie_le
|
|
BEFORE UPDATE ON utilisateurs
|
|
FOR EACH ROW EXECUTE FUNCTION set_modifie_le();
|
|
|
|
-- ========== ASSISTANTES_MATERNELLES
|
|
ALTER TABLE assistantes_maternelles
|
|
ADD COLUMN IF NOT EXISTS cree_le TIMESTAMP DEFAULT NOW(),
|
|
ADD COLUMN IF NOT EXISTS modifie_le TIMESTAMP DEFAULT NOW();
|
|
DROP TRIGGER IF EXISTS trg_am_set_modifie_le ON assistantes_maternelles;
|
|
CREATE TRIGGER trg_am_set_modifie_le
|
|
BEFORE UPDATE ON assistantes_maternelles
|
|
FOR EACH ROW EXECUTE FUNCTION set_modifie_le();
|
|
|
|
-- ========== PARENTS
|
|
ALTER TABLE parents
|
|
ADD COLUMN IF NOT EXISTS cree_le TIMESTAMP DEFAULT NOW(),
|
|
ADD COLUMN IF NOT EXISTS modifie_le TIMESTAMP DEFAULT NOW();
|
|
DROP TRIGGER IF EXISTS trg_parents_set_modifie_le ON parents;
|
|
CREATE TRIGGER trg_parents_set_modifie_le
|
|
BEFORE UPDATE ON parents
|
|
FOR EACH ROW EXECUTE FUNCTION set_modifie_le();
|
|
|
|
-- ========== ENFANTS
|
|
ALTER TABLE enfants
|
|
ADD COLUMN IF NOT EXISTS cree_le TIMESTAMP DEFAULT NOW(),
|
|
ADD COLUMN IF NOT EXISTS modifie_le TIMESTAMP DEFAULT NOW();
|
|
DROP TRIGGER IF EXISTS trg_enfants_set_modifie_le ON enfants;
|
|
CREATE TRIGGER trg_enfants_set_modifie_le
|
|
BEFORE UPDATE ON enfants
|
|
FOR EACH ROW EXECUTE FUNCTION set_modifie_le();
|
|
|
|
-- ========== ENFANTS_PARENTS (table de liaison)
|
|
ALTER TABLE enfants_parents
|
|
ADD COLUMN IF NOT EXISTS cree_le TIMESTAMP DEFAULT NOW(),
|
|
ADD COLUMN IF NOT EXISTS modifie_le TIMESTAMP DEFAULT NOW();
|
|
DROP TRIGGER IF EXISTS trg_enfants_parents_set_modifie_le ON enfants_parents;
|
|
CREATE TRIGGER trg_enfants_parents_set_modifie_le
|
|
BEFORE UPDATE ON enfants_parents
|
|
FOR EACH ROW EXECUTE FUNCTION set_modifie_le();
|
|
|
|
-- ========== DOSSIERS
|
|
ALTER TABLE dossiers
|
|
ADD COLUMN IF NOT EXISTS cree_le TIMESTAMP DEFAULT NOW(),
|
|
ADD COLUMN IF NOT EXISTS modifie_le TIMESTAMP DEFAULT NOW();
|
|
DROP TRIGGER IF EXISTS trg_dossiers_set_modifie_le ON dossiers;
|
|
CREATE TRIGGER trg_dossiers_set_modifie_le
|
|
BEFORE UPDATE ON dossiers
|
|
FOR EACH ROW EXECUTE FUNCTION set_modifie_le();
|
|
|
|
-- ========== MESSAGES
|
|
ALTER TABLE messages
|
|
ADD COLUMN IF NOT EXISTS cree_le TIMESTAMP DEFAULT NOW(),
|
|
ADD COLUMN IF NOT EXISTS modifie_le TIMESTAMP DEFAULT NOW();
|
|
DROP TRIGGER IF EXISTS trg_messages_set_modifie_le ON messages;
|
|
CREATE TRIGGER trg_messages_set_modifie_le
|
|
BEFORE UPDATE ON messages
|
|
FOR EACH ROW EXECUTE FUNCTION set_modifie_le();
|
|
|
|
-- ========== CONTRATS
|
|
ALTER TABLE contrats
|
|
ADD COLUMN IF NOT EXISTS cree_le TIMESTAMP DEFAULT NOW(),
|
|
ADD COLUMN IF NOT EXISTS modifie_le TIMESTAMP DEFAULT NOW();
|
|
DROP TRIGGER IF EXISTS trg_contrats_set_modifie_le ON contrats;
|
|
CREATE TRIGGER trg_contrats_set_modifie_le
|
|
BEFORE UPDATE ON contrats
|
|
FOR EACH ROW EXECUTE FUNCTION set_modifie_le();
|
|
|
|
-- ========== AVENANTS_CONTRATS
|
|
ALTER TABLE avenants_contrats
|
|
ADD COLUMN IF NOT EXISTS cree_le TIMESTAMP DEFAULT NOW(),
|
|
ADD COLUMN IF NOT EXISTS modifie_le TIMESTAMP DEFAULT NOW();
|
|
DROP TRIGGER IF EXISTS trg_avenants_contrats_set_modifie_le ON avenants_contrats;
|
|
CREATE TRIGGER trg_avenants_contrats_set_modifie_le
|
|
BEFORE UPDATE ON avenants_contrats
|
|
FOR EACH ROW EXECUTE FUNCTION set_modifie_le();
|
|
|
|
-- ========== EVENEMENTS
|
|
ALTER TABLE evenements
|
|
ADD COLUMN IF NOT EXISTS cree_le TIMESTAMP DEFAULT NOW(),
|
|
ADD COLUMN IF NOT EXISTS modifie_le TIMESTAMP DEFAULT NOW();
|
|
DROP TRIGGER IF EXISTS trg_evenements_set_modifie_le ON evenements;
|
|
CREATE TRIGGER trg_evenements_set_modifie_le
|
|
BEFORE UPDATE ON evenements
|
|
FOR EACH ROW EXECUTE FUNCTION set_modifie_le();
|
|
|
|
-- ========== SIGNALEMENTS_BUGS
|
|
ALTER TABLE signalements_bugs
|
|
ADD COLUMN IF NOT EXISTS cree_le TIMESTAMP DEFAULT NOW(),
|
|
ADD COLUMN IF NOT EXISTS modifie_le TIMESTAMP DEFAULT NOW();
|
|
DROP TRIGGER IF EXISTS trg_signalements_bugs_set_modifie_le ON signalements_bugs;
|
|
CREATE TRIGGER trg_signalements_bugs_set_modifie_le
|
|
BEFORE UPDATE ON signalements_bugs
|
|
FOR EACH ROW EXECUTE FUNCTION set_modifie_le();
|
|
|
|
-- ========== UPLOADS
|
|
ALTER TABLE uploads
|
|
ADD COLUMN IF NOT EXISTS cree_le TIMESTAMP DEFAULT NOW(),
|
|
ADD COLUMN IF NOT EXISTS modifie_le TIMESTAMP DEFAULT NOW();
|
|
DROP TRIGGER IF EXISTS trg_uploads_set_modifie_le ON uploads;
|
|
CREATE TRIGGER trg_uploads_set_modifie_le
|
|
BEFORE UPDATE ON uploads
|
|
FOR EACH ROW EXECUTE FUNCTION set_modifie_le();
|
|
|
|
-- ========== NOTIFICATIONS
|
|
ALTER TABLE notifications
|
|
ADD COLUMN IF NOT EXISTS cree_le TIMESTAMP DEFAULT NOW(),
|
|
ADD COLUMN IF NOT EXISTS modifie_le TIMESTAMP DEFAULT NOW();
|
|
DROP TRIGGER IF EXISTS trg_notifications_set_modifie_le ON notifications;
|
|
CREATE TRIGGER trg_notifications_set_modifie_le
|
|
BEFORE UPDATE ON notifications
|
|
FOR EACH ROW EXECUTE FUNCTION set_modifie_le();
|
|
|
|
-- ========== VALIDATIONS
|
|
ALTER TABLE validations
|
|
ADD COLUMN IF NOT EXISTS cree_le TIMESTAMP DEFAULT NOW(),
|
|
ADD COLUMN IF NOT EXISTS modifie_le TIMESTAMP DEFAULT NOW();
|
|
DROP TRIGGER IF EXISTS trg_validations_set_modifie_le ON validations;
|
|
CREATE TRIGGER trg_validations_set_modifie_le
|
|
BEFORE UPDATE ON validations
|
|
FOR EACH ROW EXECUTE FUNCTION set_modifie_le();
|