#!/bin/bash

# Script de déploiement automatique pour BNAR sur OVH
# Usage: ./deploy.sh

set -e  # Arrêter en cas d'erreur

echo "🚀 Déploiement de BNAR sur OVH"
echo "================================"
echo ""

# Vérifier que nous sommes dans le bon répertoire
if [ ! -f "server.js" ]; then
    echo "❌ Erreur: server.js non trouvé. Exécutez ce script depuis le répertoire BNAR_BACK"
    exit 1
fi

# Couleurs pour les messages
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color

# 1. Installation des dépendances
echo -e "${YELLOW}📦 Installation des dépendances...${NC}"
npm install --production

# 2. Vérifier que .env existe
if [ ! -f ".env" ]; then
    echo -e "${YELLOW}⚠️  Le fichier .env n'existe pas. Création d'un template...${NC}"
    cat > .env << 'EOF'
# Configuration du serveur
PORT=3000

# Configuration de la base de données MySQL
DB_HOST=localhost
DB_USER=bnar_user
DB_PASSWORD=CHANGEZ_MOI
DB_NAME=bnar_aibd_db
DB_PORT=3306

# JWT Secret (changez ceci en production)
JWT_SECRET=CHANGEZ_MOI_PAR_UNE_CLE_SECURISEE

# Environnement
NODE_ENV=production
EOF
    echo -e "${RED}❌ Veuillez configurer le fichier .env avant de continuer${NC}"
    exit 1
fi

# 3. Créer le répertoire de logs
echo -e "${YELLOW}📁 Création du répertoire de logs...${NC}"
mkdir -p logs

# 4. Vérifier la connexion à la base de données
echo -e "${YELLOW}🔍 Vérification de la connexion à la base de données...${NC}"
if node -e "require('dotenv').config(); require('./config/database').authenticate().then(() => { console.log('✅ Connexion OK'); process.exit(0); }).catch(err => { console.error('❌ Erreur:', err.message); process.exit(1); })" 2>/dev/null; then
    echo -e "${GREEN}✅ Connexion à la base de données réussie${NC}"
else
    echo -e "${RED}❌ Erreur de connexion à la base de données. Vérifiez votre fichier .env${NC}"
    exit 1
fi

# 5. Synchroniser la base de données
echo -e "${YELLOW}🔄 Synchronisation de la base de données...${NC}"
node -e "require('dotenv').config(); require('./config/database').sync({ alter: false }).then(() => { console.log('✅ Base de données synchronisée'); process.exit(0); }).catch(err => { console.error('❌ Erreur:', err.message); process.exit(1); })"

# 6. Arrêter l'ancienne instance PM2 si elle existe
echo -e "${YELLOW}🛑 Arrêt de l'ancienne instance...${NC}"
pm2 stop bnar-backend 2>/dev/null || echo "Aucune instance en cours"

# 7. Démarrer avec PM2
echo -e "${YELLOW}▶️  Démarrage de l'application avec PM2...${NC}"
if [ -f "ecosystem.config.js" ]; then
    pm2 start ecosystem.config.js
else
    pm2 start server.js --name bnar-backend
fi

# 8. Sauvegarder la configuration PM2
pm2 save

# 9. Afficher le statut
echo ""
echo -e "${GREEN}✅ Déploiement terminé avec succès !${NC}"
echo ""
echo "📊 Statut de l'application:"
pm2 status

echo ""
echo "📝 Logs:"
echo "  pm2 logs bnar-backend"

echo ""
echo "🔍 Monitoring:"
echo "  pm2 monit"

echo ""
echo -e "${GREEN}🎉 Votre application est maintenant en ligne !${NC}"

