-- ============================================================================
-- 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;
