#!/bin/bash # Script de migration Prisma pour la production # Usage: ./scripts/migrate-prod.sh [--dry-run] set -e # Couleurs pour les messages RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # Vérifier que DATABASE_URL est définie if [ -z "$DATABASE_URL" ]; then echo -e "${RED}❌ ERREUR: DATABASE_URL n'est pas définie${NC}" echo "Définissez-la avec: export DATABASE_URL='postgresql://...'" exit 1 fi # Mode dry-run DRY_RUN=false if [ "$1" == "--dry-run" ]; then DRY_RUN=true echo -e "${YELLOW}⚠️ Mode dry-run activé - aucune modification ne sera appliquée${NC}" fi echo -e "${GREEN}🚀 Migration Prisma pour la production${NC}" echo "" # Vérifier la connexion à la base de données echo -e "${YELLOW}📡 Vérification de la connexion à la base de données...${NC}" if ! npx prisma db execute --stdin <<< "SELECT 1;" > /dev/null 2>&1; then echo -e "${RED}❌ Impossible de se connecter à la base de données${NC}" echo "Vérifiez que DATABASE_URL est correcte et que la base de données est accessible" exit 1 fi echo -e "${GREEN}✅ Connexion réussie${NC}" echo "" # Afficher l'état actuel des migrations echo -e "${YELLOW}📊 État actuel des migrations:${NC}" npx prisma migrate status echo "" # Demander confirmation si pas en dry-run if [ "$DRY_RUN" = false ]; then echo -e "${YELLOW}⚠️ Vous êtes sur le point d'appliquer les migrations en PRODUCTION${NC}" read -p "Continuer? (oui/non): " -r if [[ ! $REPLY =~ ^[Oo]ui$ ]]; then echo -e "${RED}❌ Migration annulée${NC}" exit 0 fi echo "" fi # Appliquer les migrations if [ "$DRY_RUN" = false ]; then echo -e "${YELLOW}🔄 Application des migrations...${NC}" npx prisma migrate deploy echo -e "${GREEN}✅ Migrations appliquées avec succès${NC}" else echo -e "${YELLOW}ℹ️ Mode dry-run: les migrations ne seraient pas appliquées${NC}" fi echo "" echo -e "${GREEN}✨ Migration terminée${NC}"