Files
LeDiscord/migrate.sh

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