-- V9__introduction_saison.sql
-- 1. Création de la table saison
CREATE TABLE saison (
    id BIGSERIAL PRIMARY KEY,
    nom VARCHAR(255) NOT NULL,
    est_active BOOLEAN NOT NULL DEFAULT FALSE
);

-- Création d'une saison par défaut pour les données existantes
INSERT INTO saison (nom, est_active) VALUES ('Saison Actuelle', TRUE);

-- 2. Ajout de saison_id dans les tables de paramétrage
ALTER TABLE categorie ADD COLUMN saison_id BIGINT;
ALTER TABLE equipement ADD COLUMN saison_id BIGINT;
-- Il n'y a pas de table tarif, les tarifs sont dans categorie.

-- Affecter la saison par défaut aux paramètres existants
UPDATE categorie SET saison_id = (SELECT id FROM saison LIMIT 1);
UPDATE equipement SET saison_id = (SELECT id FROM saison LIMIT 1);

-- Rendre saison_id NOT NULL et ajouter les contraintes
ALTER TABLE categorie ALTER COLUMN saison_id SET NOT NULL;
ALTER TABLE categorie ADD CONSTRAINT fk_categorie_saison FOREIGN KEY (saison_id) REFERENCES saison(id);

ALTER TABLE equipement ALTER COLUMN saison_id SET NOT NULL;
ALTER TABLE equipement ADD CONSTRAINT fk_equipement_saison FOREIGN KEY (saison_id) REFERENCES saison(id);

-- 3. Ajout de saison_id sur licence
-- Licence a déjà une colonne saison (String). On va la remplacer par saison_id
ALTER TABLE licence RENAME COLUMN saison TO ancienne_saison;
ALTER TABLE licence ADD COLUMN saison_id BIGINT;
UPDATE licence SET saison_id = (SELECT id FROM saison LIMIT 1);
ALTER TABLE licence ALTER COLUMN saison_id SET NOT NULL;
ALTER TABLE licence ADD CONSTRAINT fk_licence_saison FOREIGN KEY (saison_id) REFERENCES saison(id);
ALTER TABLE licence DROP COLUMN ancienne_saison;

-- 4. Migration de paiement et dotation pour pointer sur licence_id au lieu de adherent_id
-- Ajout des colonnes licence_id
-- (Paiement et Dotation avaient un adherent_id qui n'est pas dans l'entité actuelle mais peut-être en base ?)
-- D'après les entités, Paiement et Dotation ont DEJA licence_id et n'ont PAS adherent_id !
-- Le plan proposait de modifier ça mais le code a DÉJÀ ces modifications.
-- Je vais juste vérifier s'il faut modifier la base de données.
-- Les entités Paiement.java et Dotation.java ont déjà `private Licence licence;`
