fix+feat(everything): lot of things
Some checks failed
Deploy to Development / build-and-deploy (push) Failing after 20s
Some checks failed
Deploy to Development / build-and-deploy (push) Failing after 20s
This commit is contained in:
137
backend/MIGRATIONS.md
Normal file
137
backend/MIGRATIONS.md
Normal file
@@ -0,0 +1,137 @@
|
||||
# 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 <revision_id>
|
||||
```
|
||||
|
||||
### 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/)
|
||||
|
||||
Reference in New Issue
Block a user