44 lines
2.2 KiB
SQL
44 lines
2.2 KiB
SQL
-- ============================================================================
|
|||
|
|
-- Migration 003 — la facette « devant le Conseil constitutionnel »
|
||
|
|
--
|
||
|
|
-- Trois situations désignent un texte suspendu au Conseil constitutionnel, et
|
||
|
|
-- le corpus les documente inégalement :
|
||
|
|
--
|
||
|
|
-- 1. le statut vaut littéralement `saisie_cc` ;
|
||
|
|
-- 2. une affaire est enregistrée avec le résultat `en_instance` (« 2026-915
|
||
|
|
-- DC ») — c'est le résultat qui fait foi, et non l'absence de date de
|
||
|
|
-- décision : le corpus cite plusieurs décisions rendues sans les dater
|
||
|
|
-- (« Mixte ; 25 articles censurés (déc. 2026-903 DC) »), or celles-là ne
|
||
|
|
-- sont plus en instance ;
|
||
|
|
-- 3. la source signale la saisine sans donner de numéro d'affaire — cas de la
|
||
|
|
-- loi actualisant la programmation militaire, « Conseil constitutionnel
|
||
|
|
-- saisi le 6 juill. » (`sec10.md`, tableau B). Aucune ligne `decisions_cc`
|
||
|
|
-- ne peut être créée faute de numéro : c'est l'événement `saisine_cc`,
|
||
|
|
-- non suivi d'un `decision_cc`, qui fait foi.
|
||
|
|
--
|
||
|
|
-- Sans le troisième cas, la facette remonte 6 textes là où le §8.7 du cahier
|
||
|
|
-- des charges en attend au moins 7.
|
||
|
|
-- ============================================================================
|
||
|
|
|
||
|
|
DROP VIEW v_textes;
|
||
|
|
|
||
|
|
CREATE VIEW v_textes AS
|
||
|
|
SELECT
|
||
|
|
t.*,
|
||
|
|
(SELECT COUNT(*) FROM sources s WHERE s.texte_id = t.id) AS nb_sources,
|
||
|
|
(SELECT COUNT(*) FROM evenements e WHERE e.texte_id = t.id) AS nb_evenements,
|
||
|
|
CASE
|
||
|
|
WHEN t.statut = 'saisie_cc' THEN 1
|
||
|
|
WHEN EXISTS (SELECT 1 FROM decisions_cc d
|
||
|
|
WHERE d.texte_id = t.id
|
||
|
|
AND d.date_decision IS NULL
|
||
|
|
AND COALESCE(d.resultat, 'en_instance') = 'en_instance') THEN 1
|
||
|
|
WHEN EXISTS (SELECT 1 FROM evenements e
|
||
|
|
WHERE e.texte_id = t.id AND e.type_etape = 'saisine_cc')
|
||
|
|
AND NOT EXISTS (SELECT 1 FROM evenements e
|
||
|
|
WHERE e.texte_id = t.id AND e.type_etape = 'decision_cc')
|
||
|
|
AND t.statut <> 'promulguee' THEN 1
|
||
|
|
ELSE 0
|
||
|
|
END AS devant_cc
|
||
|
|
FROM textes t;
|