Faire évoluer le schéma avec les migrations¶
Objectif : appliquer le schéma à une base, puis le faire évoluer proprement.
Ce que vous allez apprendre : les commandes migration:* transforment vos contrats en un schéma appliqué à la base, de façon incrémentale et traçable.
Le SQL reste visible : une migration est un fichier que vous relisez avant de l'appliquer.
Un backend est requis
Ce palier touche une vraie base.
Installez et configurez un backend (par exemple pip install forge-mvc-sqlite), puis provisionnez avec forge db:init.
Préparer la base¶
db:init affiche le SQL de provisioning (base et comptes) dérivé de votre environnement ; --run l'exécute.
Vous voyez donc ce qui va être fait avant que ce soit fait.
Créer une migration¶
Après avoir déclaré ou modifié des entités (niveau débutant), générez la migration correspondante :
Le nom est obligatoire : il devient celui du fichier produit, et c'est lui que vous lirez dans l'historique des migrations.
Choisissez-le descriptif, à la façon d'un message de commit.
Forge produit un fichier de migration à partir de l'écart entre vos contrats et l'état connu du schéma.
Ouvrez-le : c'est du SQL lisible, que vous pouvez relire et versionner.
Appliquer¶
La migration est appliquée à la base, et son application est enregistrée : elle ne sera pas rejouée.
migration:status liste ce qui est appliqué et ce qui reste en attente.
Le cycle d'évolution¶
- Modifier un contrat d'entité (ajouter un champ, une relation…).
forge build:modelpour régénérer les projections.forge migration:makepour capturer l'écart.forge migration:applypour le porter en base.
Ce cycle garde le contrat comme source, la base comme reflet appliqué, et chaque étape lisible.
Commandes Forge utilisées¶
| Commande | Rôle dans ce palier | Référence |
|---|---|---|
forge db:init |
Afficher (puis exécuter) le SQL de provisioning. | db:init |
forge migration:make |
Générer une migration depuis l'écart de schéma. | migration:* |
forge migration:apply |
Appliquer les migrations en attente. | migration:* |
forge migration:status |
Lister l'état des migrations. | migration:* |
La suite¶
Vous savez modéliser et faire évoluer une couche de données.
Faisons le bilan du niveau intermédiaire avant le niveau avancé.