-- ============================================================================
-- Migration 004 — échéances du calendrier
--
-- La page « calendrier » agrège trois natures d'échéance :
--
--   * celles qui appartiennent à un texte (décision attendue du Conseil
--     constitutionnel, entrée en vigueur, prochaine étape) — dérivées de
--     `textes`, `evenements` et `decisions_cc` ;
--   * celles qui n'appartiennent à aucun texte mais structurent la fenêtre de
--     veille : sénatoriales du 27 septembre, présentation du projet de loi de
--     finances 2027, rentrée parlementaire ordinaire du 1ᵉʳ octobre.
--
-- Cette table porte les secondes. Le champ `concerne_guadeloupe` est explicite
-- et non déductible : le scrutin sénatorial du 27 septembre 2026 ne concerne
-- PAS la Guadeloupe (série 1, renouvelée en 2023), ce que le §7 du cahier des
-- charges impose de ne pas se tromper.
-- ============================================================================

CREATE TABLE echeances (
    id                  INTEGER PRIMARY KEY AUTOINCREMENT,
    code                TEXT NOT NULL UNIQUE,   -- « senatoriales-2026 »
    date_echeance       TEXT NOT NULL,
    libelle             TEXT NOT NULL,
    description         TEXT,

    -- `nationale` : elle vaut pour l'ensemble du territoire ;
    -- `texte`     : elle découle d'un texte suivi (FK renseignée).
    portee              TEXT NOT NULL DEFAULT 'nationale'
                            CHECK (portee IN ('nationale', 'texte')),
    texte_id            TEXT REFERENCES textes (id) ON DELETE CASCADE,

    -- 1 = concerne la Guadeloupe, 0 = ne la concerne pas, NULL = non tranché.
    concerne_guadeloupe INTEGER CHECK (concerne_guadeloupe IN (0, 1)),
    note_guadeloupe     TEXT,

    -- Vrai tant que l'échéance est prévisionnelle (postérieure à la date
    -- d'arrêté du corpus et non confirmée par un collecteur).
    previsionnel        INTEGER NOT NULL DEFAULT 1 CHECK (previsionnel IN (0, 1)),

    source_url          TEXT,
    source_extrait      TEXT,
    cree_le             TEXT NOT NULL DEFAULT (datetime('now'))
);

CREATE INDEX idx_echeances_date  ON echeances (date_echeance);
CREATE INDEX idx_echeances_texte ON echeances (texte_id);
