#!/bin/bash
# scripts/restore-mysql.sh - Restauration backup MySQL
# Usage: ./restore-mysql.sh <backup_file.sql.gz>

set -e

# Couleurs
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m'

BACKUP_FILE="$1"

if [ -z "$BACKUP_FILE" ]; then
  echo -e "${RED}❌ Usage: $0 <backup_file.sql.gz>${NC}"
  echo -e "${YELLOW}Backups disponibles:${NC}"
  ls -lht ~/FailDaily/backups/mysql/faildaily_backup_*.sql.gz | head -n 10
  exit 1
fi

if [ ! -f "$BACKUP_FILE" ]; then
  echo -e "${RED}❌ Fichier introuvable: $BACKUP_FILE${NC}"
  exit 1
fi

echo -e "${YELLOW}🔄 RESTAURATION MySQL depuis:${NC}"
echo -e "   ${BACKUP_FILE}"
echo -e "${RED}⚠️  ATTENTION: Cela écrasera TOUTES les données actuelles !${NC}"
read -p "Confirmer la restauration (tapez 'yes'): " CONFIRM

if [ "$CONFIRM" != "yes" ]; then
  echo -e "${YELLOW}❌ Restauration annulée${NC}"
  exit 0
fi

# Récupérer le conteneur MySQL
MYSQL_CONTAINER=$(docker ps --filter "name=faildaily_mysql" --format "{{.ID}}" | head -n1)

if [ -z "$MYSQL_CONTAINER" ]; then
  echo -e "${RED}❌ Conteneur MySQL introuvable${NC}"
  exit 1
fi

# Récupérer le mot de passe root
ROOT_PASS=$(docker exec "$MYSQL_CONTAINER" cat /run/secrets/mysql_root_password)

# Copier le backup dans le conteneur
echo -e "${YELLOW}⏳ Copie du backup...${NC}"
docker cp "$BACKUP_FILE" "${MYSQL_CONTAINER}:/tmp/restore.sql.gz"

# Décompresser et restaurer
echo -e "${YELLOW}⏳ Restauration en cours...${NC}"
docker exec "$MYSQL_CONTAINER" bash -c \
  "gunzip < /tmp/restore.sql.gz | mysql -uroot -p'$ROOT_PASS'"

# Nettoyer
docker exec "$MYSQL_CONTAINER" rm /tmp/restore.sql.gz

echo -e "${GREEN}✅ Restauration terminée !${NC}"

# Redémarrer le backend pour reconnecter
echo -e "${YELLOW}🔄 Redémarrage backend...${NC}"
docker service update --force faildaily_backend

echo -e "${GREEN}✅ Tous les services mis à jour${NC}"
