# Guide des Migrations Alembic Ce projet utilise Alembic pour gérer les migrations de base de données de manière versionnée et contrôlée. ## 🚀 Démarrage rapide ### Première utilisation Si c'est la première fois que vous utilisez Alembic sur ce projet : ```bash # Depuis le conteneur backend docker compose exec backend alembic revision --autogenerate -m "Initial migration" # Appliquer la migration docker compose exec backend alembic upgrade head ``` ### Commandes courantes ```bash # Créer une nouvelle migration (autogenerate depuis les modèles) docker compose exec backend alembic revision --autogenerate -m "Description de la migration" # Appliquer toutes les migrations en attente docker compose exec backend alembic upgrade head # Revenir en arrière d'une migration docker compose exec backend alembic downgrade -1 # Voir la migration actuelle docker compose exec backend alembic current # Voir l'historique des migrations docker compose exec backend alembic history ``` ## 📋 Workflow de développement ### 1. Modifier un modèle Éditez les fichiers dans `backend/models/` pour ajouter/modifier des colonnes, tables, etc. ### 2. Créer une migration ```bash docker compose exec backend alembic revision --autogenerate -m "Ajout du champ X à la table Y" ``` Alembic va automatiquement détecter les changements dans vos modèles SQLAlchemy. ### 3. Vérifier la migration Ouvrez le fichier généré dans `backend/migrations/versions/` et vérifiez que les changements sont corrects. ### 4. Appliquer la migration ```bash docker compose exec backend alembic upgrade head ``` ### 5. Tester Vérifiez que votre application fonctionne correctement avec les nouvelles migrations. ## ⚠️ Notes importantes - **Ne modifiez jamais manuellement** les fichiers de migration existants qui ont déjà été appliqués - **Toujours tester** les migrations en développement avant de les appliquer en production - **Sauvegardez votre base de données** avant d'appliquer des migrations en production - Les migrations sont **versionnées** : chaque migration a un ID unique et un historique ## 🔄 Migration manuelle (sans autogenerate) Si vous avez besoin de créer une migration manuelle (pour des données, des index complexes, etc.) : ```bash docker compose exec backend alembic revision -m "Description" ``` Puis éditez le fichier généré dans `backend/migrations/versions/` pour ajouter votre logique. ## 🐛 Dépannage ### Migration en conflit Si vous avez des conflits de migration : ```bash # Voir l'état actuel docker compose exec backend alembic current # Voir l'historique docker compose exec backend alembic history # Revenir à une version spécifique docker compose exec backend alembic downgrade ``` ### Migration qui échoue Si une migration échoue : 1. Vérifiez les logs : `docker compose logs backend` 2. Vérifiez l'état de la base : `docker compose exec backend alembic current` 3. Si nécessaire, corrigez la migration et réessayez ### Réinitialiser les migrations (⚠️ DANGEREUX) **ATTENTION** : Cela supprime toutes les données ! ```bash # Supprimer toutes les tables docker compose exec backend alembic downgrade base # Recréer depuis le début docker compose exec backend alembic upgrade head ``` ## 📁 Structure des fichiers ``` backend/ ├── alembic.ini # Configuration Alembic ├── migrations/ │ ├── env.py # Configuration de l'environnement │ ├── script.py.mako # Template pour les migrations │ ├── versions/ # Fichiers de migration (générés) │ └── README.md # Documentation └── models/ # Modèles SQLAlchemy ``` ## 🔗 Ressources - [Documentation Alembic](https://alembic.sqlalchemy.org/) - [SQLAlchemy Documentation](https://docs.sqlalchemy.org/)