#!/bin/bash

###############################################################################
# Script de mise à jour rapide - Formation Manager Itinova
# Version: 7a737c05
# Auteur: Manus AI
# Description: Script simplifié pour mettre à jour l'application en production
###############################################################################

set -e

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

# Configuration
APP_DIR="/var/www/formation-manager-itinova"
SERVICE_NAME="formation-manager"

print_info() {
    echo -e "${BLUE}[INFO]${NC} $1"
}

print_success() {
    echo -e "${GREEN}[OK]${NC} $1"
}

print_error() {
    echo -e "${RED}[ERREUR]${NC} $1"
}

# Vérifier les privilèges sudo
if [[ $EUID -ne 0 ]]; then
    print_error "Ce script doit être exécuté avec sudo"
    exit 1
fi

echo "========================================"
echo "  Mise à jour Formation Manager Itinova"
echo "  Version: 7a737c05"
echo "========================================"
echo ""

cd "$APP_DIR"

# 1. Arrêter le service
print_info "Arrêt du service..."
systemctl stop "$SERVICE_NAME"
print_success "Service arrêté"

# 2. Sauvegarder .env
print_info "Sauvegarde de la configuration..."
cp .env /tmp/.env.backup
print_success "Configuration sauvegardée"

# 3. Mettre à jour le code
print_info "Mise à jour du code..."
git pull origin main
print_success "Code mis à jour"

# 4. Installer les dépendances
print_info "Installation des dépendances..."
pnpm install
print_success "Dépendances installées"

# 5. Appliquer les migrations
print_info "Application des migrations..."
pnpm db:push
print_success "Migrations appliquées"

# 6. Build
print_info "Compilation de l'application..."
pnpm run build
print_success "Application compilée"

# 7. Restaurer .env
print_info "Restauration de la configuration..."
cp /tmp/.env.backup .env
print_success "Configuration restaurée"

# 8. Redémarrer le service
print_info "Redémarrage du service..."
systemctl start "$SERVICE_NAME"
sleep 3

if systemctl is-active --quiet "$SERVICE_NAME"; then
    print_success "Service redémarré"
else
    print_error "Échec du redémarrage"
    systemctl status "$SERVICE_NAME"
    exit 1
fi

echo ""
echo "========================================"
print_success "Mise à jour terminée avec succès !"
echo "========================================"
echo ""
print_info "Vérifiez les logs: sudo journalctl -u $SERVICE_NAME -f"
