apres correction et finalisatio de la synchronisation

This commit is contained in:
2025-08-11 12:37:08 +01:00
parent e1ef4c3b7e
commit 512e1cf367
202 changed files with 4642 additions and 3695 deletions

View File

@@ -0,0 +1,52 @@
-- 1⃣ Créer la table daudit
CREATE TABLE audit.acteur_concerne_audit_log (
audit_id SERIAL PRIMARY KEY,
acteur_concerne_id BIGINT,
action VARCHAR(10),
changed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
old_data JSONB,
new_data JSONB
);
-- 2⃣ Créer la fonction daudit
CREATE OR REPLACE FUNCTION audit.audit_acteur_concerne_changes()
RETURNS TRIGGER AS $$
BEGIN
IF (TG_OP = 'UPDATE') THEN
INSERT INTO audit.acteur_concerne_audit_log (acteur_concerne_id, action, old_data, new_data)
VALUES (
OLD.id,
TG_OP,
to_jsonb(OLD),
to_jsonb(NEW)
);
RETURN NEW;
ELSIF (TG_OP = 'INSERT') THEN
INSERT INTO audit.acteur_concerne_audit_log (acteur_concerne_id, action, new_data)
VALUES (
NEW.id,
TG_OP,
to_jsonb(NEW)
);
RETURN NEW;
ELSIF (TG_OP = 'DELETE') THEN
INSERT INTO audit.acteur_concerne_audit_log (acteur_concerne_id, action, old_data)
VALUES (
OLD.id,
TG_OP,
to_jsonb(OLD)
);
RETURN OLD;
END IF;
END;
$$ LANGUAGE plpgsql;
-- 3⃣ Créer le trigger
CREATE TRIGGER trigger_audit_acteur_concerne
AFTER INSERT OR UPDATE OR DELETE ON acteur_concerne
FOR EACH ROW
EXECUTE FUNCTION audit.audit_acteur_concerne_changes();
GRANT USAGE ON SCHEMA audit TO infocad_user;
GRANT INSERT, SELECT ON audit.acteur_concerne_audit_log TO infocad_user;

View File

@@ -0,0 +1,86 @@
-- Créer le schéma audit
CREATE SCHEMA IF NOT EXISTS audit;
-- Créer la table d'audit dans le schéma audit
CREATE TABLE audit.enquete_audit_log (
audit_id SERIAL PRIMARY KEY,
enquete_id BIGINT,
action VARCHAR(10),
changed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
old_data JSONB,
new_data JSONB
);
-- Créer la fonction dans le schéma audit
CREATE OR REPLACE FUNCTION audit.audit_enquete_changes()
RETURNS TRIGGER AS $$
BEGIN
IF (TG_OP = 'UPDATE') THEN
INSERT INTO audit.enquete_audit_log (enquete_id, action, old_data, new_data)
VALUES (
OLD.id,
TG_OP,
to_jsonb(OLD),
to_jsonb(NEW)
);
RETURN NEW;
ELSIF (TG_OP = 'INSERT') THEN
INSERT INTO audit.enquete_audit_log (enquete_id, action, new_data)
VALUES (
NEW.id,
TG_OP,
to_jsonb(NEW)
);
RETURN NEW;
ELSIF (TG_OP = 'DELETE') THEN
INSERT INTO audit.enquete_audit_log (enquete_id, action, old_data)
VALUES (
OLD.id,
TG_OP,
to_jsonb(OLD)
);
RETURN OLD;
END IF;
END;
$$ LANGUAGE plpgsql;
-- Créer le trigger
CREATE TRIGGER trigger_audit_enquete
AFTER INSERT OR UPDATE OR DELETE ON enquete
FOR EACH ROW
EXECUTE FUNCTION audit.audit_enquete_changes();
-- donner les droits si nécéssaires
GRANT USAGE ON SCHEMA audit TO infocad_user;
GRANT INSERT, SELECT ON audit.enquete_audit_log TO infocad_user;
-- Lister les audits
SELECT * FROM enquete_audit_log WHERE enquete_id = 42 ORDER BY changed_at DESC;
SELECT
enquete_id,
action,
changed_at,
old_data->>'status_enquete' AS status_before,
new_data->>'status_enquete' AS status_after,
old_data->>'updated_by' AS updated_by_before,
new_data->>'updated_by' AS updated_by_after
FROM audit.enquete_audit_log
WHERE enquete_id = 5
ORDER BY changed_at DESC;

View File

@@ -0,0 +1,55 @@
-- Créer le schéma audit
CREATE SCHEMA IF NOT EXISTS audit;
-- 1⃣ Créer la table daudit
CREATE TABLE audit.parcelle_audit_log (
audit_id SERIAL PRIMARY KEY,
parcelle_id BIGINT,
action VARCHAR(10),
changed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
old_data JSONB,
new_data JSONB
);
-- 2⃣ Créer la fonction daudit
CREATE OR REPLACE FUNCTION audit.audit_parcelle_changes()
RETURNS TRIGGER AS $$
BEGIN
IF (TG_OP = 'UPDATE') THEN
INSERT INTO audit.parcelle_audit_log (parcelle_id, action, old_data, new_data)
VALUES (
OLD.id,
TG_OP,
to_jsonb(OLD),
to_jsonb(NEW)
);
RETURN NEW;
ELSIF (TG_OP = 'INSERT') THEN
INSERT INTO audit.parcelle_audit_log (parcelle_id, action, new_data)
VALUES (
NEW.id,
TG_OP,
to_jsonb(NEW)
);
RETURN NEW;
ELSIF (TG_OP = 'DELETE') THEN
INSERT INTO audit.parcelle_audit_log (parcelle_id, action, old_data)
VALUES (
OLD.id,
TG_OP,
to_jsonb(OLD)
);
RETURN OLD;
END IF;
END;
$$ LANGUAGE plpgsql;
-- 3⃣ Créer le trigger
CREATE TRIGGER trigger_audit_parcelle
AFTER INSERT OR UPDATE OR DELETE ON parcelle
FOR EACH ROW
EXECUTE FUNCTION audit.audit_parcelle_changes();
GRANT USAGE ON SCHEMA audit TO infocad_user;
GRANT INSERT, SELECT ON audit.parcelle_audit_log TO infocad_user;

View File

@@ -0,0 +1,69 @@
-- Créer le schéma audit
CREATE SCHEMA IF NOT EXISTS audit;
-- 1⃣ Créer la table daudit
CREATE TABLE audit.personne_audit_log (
audit_id SERIAL PRIMARY KEY,
personne_id BIGINT,
action VARCHAR(10),
changed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
old_data JSONB,
new_data JSONB
);
-- 2⃣ Créer la fonction daudit
CREATE OR REPLACE FUNCTION audit.audit_personne_changes()
RETURNS TRIGGER AS $$
BEGIN
IF (TG_OP = 'UPDATE') THEN
INSERT INTO audit.personne_audit_log (personne_id, action, old_data, new_data)
VALUES (
OLD.id,
TG_OP,
to_jsonb(OLD),
to_jsonb(NEW)
);
RETURN NEW;
ELSIF (TG_OP = 'INSERT') THEN
INSERT INTO audit.personne_audit_log (personne_id, action, new_data)
VALUES (
NEW.id,
TG_OP,
to_jsonb(NEW)
);
RETURN NEW;
ELSIF (TG_OP = 'DELETE') THEN
INSERT INTO audit.personne_audit_log (personne_id, action, old_data)
VALUES (
OLD.id,
TG_OP,
to_jsonb(OLD)
);
RETURN OLD;
END IF;
END;
$$ LANGUAGE plpgsql;
-- 3⃣ Créer le trigger
CREATE TRIGGER trigger_audit_personne
AFTER INSERT OR UPDATE OR DELETE ON personne
FOR EACH ROW
EXECUTE FUNCTION audit.audit_personne_changes();
GRANT USAGE ON SCHEMA audit TO infocad_user;
GRANT INSERT, SELECT ON audit.personne_audit_log TO infocad_user;
SELECT
personne_id,
action,
changed_at,
old_data->>'prenom_ou_raison_sociale' AS prenom_before,
new_data->>'prenom_ou_raison_sociale' AS prenom_after,
old_data->>'updated_by' AS updated_by_before,
new_data->>'updated_by' AS updated_by_after
FROM audit.personne_audit_log
WHERE personne_id = 10
ORDER BY changed_at DESC;

View File

@@ -0,0 +1,52 @@
-- 1⃣ Créer la table daudit
CREATE TABLE audit.piece_audit_log (
audit_id SERIAL PRIMARY KEY,
piece_id BIGINT,
action VARCHAR(10),
changed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
old_data JSONB,
new_data JSONB
);
-- 2⃣ Créer la fonction daudit
CREATE OR REPLACE FUNCTION audit.audit_piece_changes()
RETURNS TRIGGER AS $$
BEGIN
IF (TG_OP = 'UPDATE') THEN
INSERT INTO audit.piece_audit_log (piece_id, action, old_data, new_data)
VALUES (
OLD.id,
TG_OP,
to_jsonb(OLD),
to_jsonb(NEW)
);
RETURN NEW;
ELSIF (TG_OP = 'INSERT') THEN
INSERT INTO audit.piece_audit_log (piece_id, action, new_data)
VALUES (
NEW.id,
TG_OP,
to_jsonb(NEW)
);
RETURN NEW;
ELSIF (TG_OP = 'DELETE') THEN
INSERT INTO audit.piece_audit_log (piece_id, action, old_data)
VALUES (
OLD.id,
TG_OP,
to_jsonb(OLD)
);
RETURN OLD;
END IF;
END;
$$ LANGUAGE plpgsql;
-- 3⃣ Créer le trigger
CREATE TRIGGER trigger_audit_piece
AFTER INSERT OR UPDATE OR DELETE ON piece
FOR EACH ROW
EXECUTE FUNCTION audit.audit_piece_changes();
GRANT USAGE ON SCHEMA audit TO infocad_user;
GRANT INSERT, SELECT ON audit.piece_audit_log TO infocad_user;

View File

@@ -0,0 +1,52 @@
-- 1⃣ Créer la table daudit
CREATE TABLE audit.upload_audit_log (
audit_id SERIAL PRIMARY KEY,
upload_id BIGINT,
action VARCHAR(10),
changed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
old_data JSONB,
new_data JSONB
);
-- 2⃣ Créer la fonction daudit
CREATE OR REPLACE FUNCTION audit.audit_upload_changes()
RETURNS TRIGGER AS $$
BEGIN
IF (TG_OP = 'UPDATE') THEN
INSERT INTO audit.upload_audit_log (upload_id, action, old_data, new_data)
VALUES (
OLD.id,
TG_OP,
to_jsonb(OLD),
to_jsonb(NEW)
);
RETURN NEW;
ELSIF (TG_OP = 'INSERT') THEN
INSERT INTO audit.upload_audit_log (upload_id, action, new_data)
VALUES (
NEW.id,
TG_OP,
to_jsonb(NEW)
);
RETURN NEW;
ELSIF (TG_OP = 'DELETE') THEN
INSERT INTO audit.upload_audit_log (upload_id, action, old_data)
VALUES (
OLD.id,
TG_OP,
to_jsonb(OLD)
);
RETURN OLD;
END IF;
END;
$$ LANGUAGE plpgsql;
-- 3⃣ Créer le trigger
CREATE TRIGGER trigger_audit_upload
AFTER INSERT OR UPDATE OR DELETE ON upload
FOR EACH ROW
EXECUTE FUNCTION audit.audit_upload_changes();
GRANT USAGE ON SCHEMA audit TO infocad_user;
GRANT INSERT, SELECT ON audit.upload_audit_log TO infocad_user;

24
sql/migration/script.sh Normal file
View File

@@ -0,0 +1,24 @@
# pour sauvegarder la base infocad
# 👉 Explications :
#
#docker exec -t postgres_db: Exécute la commande dans le container.
#
#pg_dump: Utilitaire pour exporter la base.
#
#-U infocad_user: Nom d'utilisateur que tu as mis dans docker-compose.
#
#infocad: Le nom de la base de données.
#
#> backup_infocad.sql: Sauvegarde le dump sur ta machine hôte (pas dans le container).
docker exec -t postgres_db pg_dump -U infocad_user infocad | gzip > backup_infocad.sql.gz
# Suppression des tables
DROP SCHEMA public CASCADE;
CREATE SCHEMA public;
# 🚀 Pour restaurer plus tard :
#a) Copie du fichier dans le container :
gunzip -c backup_infocad.sql.gz | docker exec -i postgres_db psql -U infocad_user infocad