#!/bin/bash

# Script de mise à jour pour MediFlash SOS+
# Usage: ./update.sh [version-url]

set -e

VERSION_URL=${1:-"https://releases.mediflash-sos.com/latest.zip"}
BACKUP_DIR="./backups/pre-update-$(date +%Y%m%d_%H%M%S)"

echo "🔄 Mise à jour MediFlash SOS+"

# 1. Sauvegarde pré-mise à jour
echo "💾 Sauvegarde pré-mise à jour..."
./deploy-scripts/backup.sh $BACKUP_DIR

# 2. Télécharger nouvelle version
echo "📥 Téléchargement nouvelle version..."
wget -O update.zip $VERSION_URL

# 3. Arrêter services
echo "⏹️ Arrêt des services..."
docker-compose down

# 4. Sauvegarder configuration actuelle
echo "📋 Sauvegarde configuration..."
cp .env .env.backup
cp docker-compose.yml docker-compose.yml.backup

# 5. Extraire mise à jour
echo "📦 Extraction mise à jour..."
unzip -o update.zip
rm update.zip

# 6. Restaurer configuration
echo "⚙️ Restauration configuration..."
mv .env.backup .env
# Garder docker-compose.yml de l'update mais merger si nécessaire

# 7. Reconstruire images
echo "🔨 Reconstruction des images..."
docker-compose build --no-cache

# 8. Redémarrer services
echo "🚀 Redémarrage des services..."
docker-compose up -d

# 9. Vérifier health
echo "🏥 Vérification health checks..."
sleep 30

for i in {1..5}; do
    if curl -f http://localhost:5000/api/health >/dev/null 2>&1; then
        echo "✅ Backend opérationnel"
        break
    fi
    echo "⏳ Attente backend... ($i/5)"
    sleep 10
done

for i in {1..3}; do
    if curl -f http://localhost:3000/health >/dev/null 2>&1; then
        echo "✅ Frontend opérationnel"
        break
    fi
    echo "⏳ Attente frontend... ($i/3)"
    sleep 5
done

echo ""
echo "✅ Mise à jour terminée !"
echo "📋 Sauvegarde disponible dans: $BACKUP_DIR"
echo "🌐 Application accessible: http://localhost:3000"
echo ""
echo "ℹ️ En cas de problème, restaurez avec:"
echo "   docker-compose down"
echo "   tar -xzf $BACKUP_DIR/mediflash-backup-*-complete.tar.gz"
echo "   docker-compose up -d"