ajout de script / modif d'enum et simplification du lancement en local

This commit is contained in:
951095
2025-09-19 10:22:34 +02:00
parent 4d402bb7cc
commit 80f24dce5a
25 changed files with 849 additions and 923 deletions
+9 -33
View File
@@ -1,23 +1,5 @@
-- ============================================================
-- verify.sql — Jeux de requêtes de vérification (Sprint 1)
-- Objectifs :
-- 1) Vérifier l'intégrité fonctionnelle (joins, données seedées)
-- 2) Détecter rapidement des problèmes d'index/perf (EXPLAIN)
-- 3) Servir de référence pour le back/front (requêtes typiques)
--
-- Usage (Docker) :
-- docker compose exec -T postgres \
-- psql -U ${POSTGRES_USER} -d ${POSTGRES_DB} \
-- -f /docker-entrypoint-initdb.d/tests/verify.sql
--
-- Pré-requis :
-- - 01_init.sql
-- - 02_indexes.sql
-- - 03_checks.sql
-- - 04_fk_policies.sql
-- - 05_triggers.sql
-- - 02_seed.sql (pour résultats non vides)
-- ============================================================
\echo '=== 0) Version & horodatage ===================================='
@@ -38,9 +20,9 @@ ORDER BY nb DESC;
\echo '=== 3) Parents avec co-parents (NULL si pas de co-parent) ======'
SELECT p.id_utilisateur AS parent_id,
u.courriel AS parent_email,
u.email AS parent_email,
p.id_co_parent,
uc.courriel AS co_parent_email
uc.email AS co_parent_email
FROM parents p
JOIN utilisateurs u ON u.id = p.id_utilisateur
LEFT JOIN utilisateurs uc ON uc.id = p.id_co_parent
@@ -52,21 +34,21 @@ FROM enfants
ORDER BY nom, prenom;
\echo '=== 5) Liaison N:N parents_enfants ============================='
SELECT ep.id_parent, up.courriel AS parent_email, ep.id_enfant, e.prenom AS enfant
SELECT ep.id_parent, up.email AS parent_email, ep.id_enfant, e.prenom AS enfant
FROM enfants_parents ep
JOIN utilisateurs up ON up.id = ep.id_parent
JOIN enfants e ON e.id = ep.id_enfant
ORDER BY parent_email, enfant;
\echo '=== 6) Dossiers (parent, enfant, statut) ======================='
SELECT d.id, up.courriel AS parent_email, e.prenom AS enfant, d.statut, d.budget
SELECT d.id, up.email AS parent_email, e.prenom AS enfant, d.statut, d.budget
FROM dossiers d
JOIN utilisateurs up ON up.id = d.id_parent
JOIN enfants e ON e.id = d.id_enfant
ORDER BY d.cree_le DESC;
\echo '=== 7) Messages par dossier (ordre chronologique) =============='
SELECT m.id, m.id_dossier, m.id_expediteur, ue.courriel AS expediteur_email, m.contenu, m.cree_le
SELECT m.id, m.id_dossier, m.id_expediteur, ue.email AS expediteur_email, m.contenu, m.cree_le
FROM messages m
LEFT JOIN utilisateurs ue ON ue.id = m.id_expediteur
ORDER BY m.id_dossier, m.cree_le;
@@ -87,22 +69,20 @@ WHERE ev.date_debut >= (NOW()::date - INTERVAL '30 days')
ORDER BY ev.date_debut DESC;
\echo '=== 10) Uploads & notifications récentes ======================='
SELECT u.courriel, up.fichier_url, up.type_fichier, up.cree_le
SELECT u.email, up.fichier_url, up.type AS fichier_type, up.cree_le
FROM uploads up
LEFT JOIN utilisateurs u ON u.id = up.id_utilisateur
ORDER BY up.cree_le DESC;
SELECT u.courriel, n.type, n.contenu, n.lu, n.cree_le
SELECT u.email, n.contenu, n.lu, n.cree_le
FROM notifications n
LEFT JOIN utilisateurs u ON u.id = n.id_utilisateur
ORDER BY n.cree_le DESC;
\echo '=== 11) Validations (qui a validé quoi) ========================'
SELECT v.id, uu.courriel AS utilisateur_valide,
uv.courriel AS valide_par, v.statut, v.commentaire, v.cree_le
SELECT v.id, u.email AS utilisateur_email, v.type, v.statut, v.cree_le
FROM validations v
LEFT JOIN utilisateurs uu ON uu.id = v.id_utilisateur
LEFT JOIN utilisateurs uv ON uv.id = v.valide_par
LEFT JOIN utilisateurs u ON u.id = v.id_utilisateur
ORDER BY v.cree_le DESC;
-- ============================================================
@@ -176,19 +156,15 @@ WHERE d.id_parent = '33333333-3333-3333-3333-333333333333'
ORDER BY d.cree_le DESC;
\echo '=== 14) JSONB : exemples de filtrage ==========================='
-- Recherche de dossiers où planning_souhaite contient midi=true un jour ouvré
-- (Index GIN recommandé si usage intensif : cf. 02_indexes.sql)
SELECT d.id, d.planning_souhaite
FROM dossiers d
WHERE d.planning_souhaite @> '{"lun_ven":{"midi":true}}';
-- Contrats : présence dun créneau donné
SELECT c.id, c.planning
FROM contrats c
WHERE c.planning @> '{"lun_ven":{"17h-19h":true}}';
\echo '=== 15) Sanity check final ===================================='
-- Quelques totaux utiles
SELECT
(SELECT COUNT(*) FROM utilisateurs) AS nb_utilisateurs,
(SELECT COUNT(*) FROM parents) AS nb_parents,