2.7 KiB
2.7 KiB
Stratégie des migrations Flyway
Vue d’ensemble
| Version | Fichier | Rôle |
|---|---|---|
| V1 | V1__UnionFlow_Complete_Schema.sql |
Schéma historique consolidé (anciennes V1.2 à V3.7) + données de référence et de test |
| V2 | V2__Entity_Schema_Alignment.sql |
Alignement du schéma avec les entités JPA (colonnes/tables manquantes, types, index). Idempotent. |
Les 25 fichiers d’origine sont conservés dans db/legacy-migrations/ (référence uniquement, Flyway ne les exécute pas).
Ordre d’exécution
- V1 : crée les tables, contraintes et données de base.
- V2 : ajoute ou modifie colonnes/tables pour correspondre aux entités JPA (ADD COLUMN IF NOT EXISTS, CREATE TABLE IF NOT EXISTS). Peut être exécuté plusieurs fois sans effet de bord.
Nouvelle base de données
Avec une base vide, Flyway exécute V1 puis V2. Aucune autre action.
Base déjà migrée avec les anciennes versions (V1.2 à V3.7)
Si la base a déjà été migrée avec les 25 anciens scripts, il faut une seule fois mettre à jour l’historique Flyway pour refléter la consolidation :
- Sauvegarder la base.
- Se connecter en base (psql, DBeaver, etc.) et exécuter :
-- Marquer la consolidation comme appliquée (une seule fois)
DELETE FROM flyway_schema_history WHERE version IN (
'1.2','1.3','1.4','1.5','1.6','1.7','2.0','2.1','2.2','2.3','2.4','2.5','2.6','2.7','2.8','2.9','2.10',
'3.0','3.1','3.2','3.3','3.4','3.5','3.6','3.7'
);
INSERT INTO flyway_schema_history (installed_rank, version, description, type, script, checksum, installed_by, execution_time, success)
VALUES (
(SELECT COALESCE(MAX(installed_rank),0) + 1 FROM flyway_schema_history f2),
'1', 'UnionFlow Complete Schema', 'SQL', 'V1__UnionFlow_Complete_Schema.sql', NULL, current_user, 0, true
);
Après cela, Flyway considère que la version 1 est appliquée et n’exécutera plus les anciens scripts.
Évolutions futures
- Changement de schéma métier (nouvelles tables, nouvelles colonnes métier) : ajouter une migration V3, V4, etc. (une par release ou lot cohérent).
- Alignement entités JPA : si de nouvelles entités ou champs sont ajoutés au code, compléter
V2__Entity_Schema_Alignment.sqlavec desADD COLUMN IF NOT EXISTS/CREATE TABLE IF NOT EXISTSpour garder un seul fichier d’alignement.
Régénérer le script consolidé
Si les fichiers dans legacy/ sont modifiés et que vous voulez régénérer V1__UnionFlow_Complete_Schema.sql :
cd unionflow-server-impl-quarkus
./scripts/merge-migrations.ps1
(Remettre temporairement les 25 fichiers dans db/migration/ avant de lancer le script, puis les redéplacer dans legacy/.)