-- ============================================================
-- PTA V5.17 - Périodes de vacances scolaires
-- ============================================================
-- Les dates sont validées manuellement par l'utilisateur avant
-- d'être enregistrées, même lorsqu'elles proviennent de l'API
-- officielle du calendrier scolaire.
--
-- date_fin est stockée de façon INCLUSIVE dans PTA.
-- Pour une proposition issue de l'API, la date de reprise fournie
-- par l'API est convertie en dernier jour de vacances (veille).

CREATE TABLE IF NOT EXISTS periode_vacance (
    id_periode INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    libelle VARCHAR(150) NOT NULL,
    date_debut DATE NOT NULL,
    date_fin DATE NOT NULL,
    annee_scolaire VARCHAR(9) NOT NULL,
    academie VARCHAR(100) NOT NULL DEFAULT '',
    zone VARCHAR(50) NOT NULL DEFAULT '',
    source ENUM('MANUEL', 'DATA_GOUV') NOT NULL DEFAULT 'MANUEL',
    actif BOOLEAN NOT NULL DEFAULT TRUE,
    date_creation DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,

    CONSTRAINT chk_periode_vacance_dates
        CHECK (date_fin >= date_debut),

    UNIQUE KEY uk_periode_vacance (
        date_debut,
        date_fin,
        annee_scolaire,
        academie
    ),

    KEY idx_periode_vacance_dates (date_debut, date_fin),
    KEY idx_periode_vacance_annee (annee_scolaire)
) ENGINE = InnoDB;
