102 lines
3.3 KiB
Bash
Executable File
102 lines
3.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# ===========================================
|
|
# LeDiscord - Script de migration de base de données
|
|
# ===========================================
|
|
|
|
set -e
|
|
|
|
echo "🗄️ Script de migration de base de données LeDiscord"
|
|
|
|
# Vérifier que Docker est en cours d'exécution
|
|
if ! docker info > /dev/null 2>&1; then
|
|
echo "❌ Docker n'est pas en cours d'exécution"
|
|
exit 1
|
|
fi
|
|
|
|
# Vérifier que le conteneur backend est en cours d'exécution
|
|
if ! docker ps | grep -q "lediscord_backend"; then
|
|
echo "❌ Le conteneur backend n'est pas en cours d'exécution"
|
|
echo " Lancez d'abord 'make start' ou 'docker-compose up -d'"
|
|
exit 1
|
|
fi
|
|
|
|
echo "✅ Conteneur backend en cours d'exécution"
|
|
|
|
# Menu des options
|
|
echo ""
|
|
echo "Choisissez une option :"
|
|
echo "1) Créer une migration"
|
|
echo "2) Appliquer les migrations"
|
|
echo "3) Annuler la dernière migration"
|
|
echo "4) Voir l'état des migrations"
|
|
echo "5) Réinitialiser la base de données (⚠️ DANGEREUX)"
|
|
echo "6) Sauvegarder la base de données"
|
|
echo "7) Restaurer la base de données"
|
|
echo "0) Quitter"
|
|
echo ""
|
|
|
|
read -p "Votre choix (0-7) : " choice
|
|
|
|
case $choice in
|
|
1)
|
|
echo "📝 Création d'une migration..."
|
|
read -p "Nom de la migration : " migration_name
|
|
docker exec lediscord_backend alembic revision --autogenerate -m "$migration_name"
|
|
echo "✅ Migration créée"
|
|
;;
|
|
2)
|
|
echo "🔄 Application des migrations..."
|
|
docker exec lediscord_backend alembic upgrade head
|
|
echo "✅ Migrations appliquées"
|
|
;;
|
|
3)
|
|
echo "↩️ Annulation de la dernière migration..."
|
|
docker exec lediscord_backend alembic downgrade -1
|
|
echo "✅ Dernière migration annulée"
|
|
;;
|
|
4)
|
|
echo "📊 État des migrations..."
|
|
docker exec lediscord_backend alembic current
|
|
echo ""
|
|
echo "Historique des migrations :"
|
|
docker exec lediscord_backend alembic history
|
|
;;
|
|
5)
|
|
echo "⚠️ ATTENTION : Cette action va supprimer toutes les données !"
|
|
read -p "Êtes-vous sûr ? Tapez 'OUI' pour confirmer : " confirm
|
|
if [ "$confirm" = "OUI" ]; then
|
|
echo "🗑️ Suppression de la base de données..."
|
|
docker exec lediscord_backend alembic downgrade base
|
|
docker exec lediscord_backend alembic upgrade head
|
|
echo "✅ Base de données réinitialisée"
|
|
else
|
|
echo "❌ Opération annulée"
|
|
fi
|
|
;;
|
|
6)
|
|
echo "💾 Sauvegarde de la base de données..."
|
|
timestamp=$(date +%Y%m%d_%H%M%S)
|
|
docker exec lediscord_postgres pg_dump -U lediscord_user lediscord > "backup_${timestamp}.sql"
|
|
echo "✅ Sauvegarde créée : backup_${timestamp}.sql"
|
|
;;
|
|
7)
|
|
echo "📥 Restauration de la base de données..."
|
|
read -p "Nom du fichier de sauvegarde : " backup_file
|
|
if [ -f "$backup_file" ]; then
|
|
docker exec -i lediscord_postgres psql -U lediscord_user lediscord < "$backup_file"
|
|
echo "✅ Base de données restaurée"
|
|
else
|
|
echo "❌ Fichier de sauvegarde non trouvé : $backup_file"
|
|
fi
|
|
;;
|
|
0)
|
|
echo "👋 Au revoir !"
|
|
exit 0
|
|
;;
|
|
*)
|
|
echo "❌ Choix invalide"
|
|
exit 1
|
|
;;
|
|
esac
|