#!/bin/bash
# scripts/deploy.sh - Script de despliegue para cPanel

echo "🚀 Iniciando despliegue WebSocket Quantaxperia..."

# Colores para output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

# Función para imprimir con color
print_status() {
    echo -e "${GREEN}[INFO]${NC} $1"
}

print_warning() {
    echo -e "${YELLOW}[WARN]${NC} $1"
}

print_error() {
    echo -e "${RED}[ERROR]${NC} $1"
}

# Verificar si estamos en el directorio correcto
if [ ! -f "package.json" ]; then
    print_error "No se encuentra package.json. Ejecutar desde el directorio raíz del proyecto."
    exit 1
fi

print_status "Verificando instalación de PM2..."
if ! command -v pm2 &> /dev/null; then
    print_warning "PM2 no está instalado. Instalando..."
    npm install -g pm2
fi

print_status "Instalando dependencias..."
npm install

print_status "Compilando TypeScript..."
npm run build

if [ $? -ne 0 ]; then
    print_error "Error en compilación. Abortando despliegue."
    exit 1
fi

print_status "Verificando configuración..."
if [ ! -f ".env" ]; then
    print_warning "No se encuentra archivo .env"
    print_warning "Creando .env de ejemplo..."
    cat > .env << EOF
DB_HOST=localhost
DB_USER=tu_usuario
DB_PASS=tu_password
DB_NAME=tu_base_datos
PORT=8080
HOST=0.0.0.0
NODE_ENV=production
EOF
    print_error "Configurar las variables en .env antes de continuar"
    exit 1
fi

print_status "Deteniendo aplicación anterior (si existe)..."
pm2 stop websocket-quantaxperia 2>/dev/null || true
pm2 delete websocket-quantaxperia 2>/dev/null || true

print_status "Iniciando aplicación con PM2..."
pm2 start ecosystem.config.js --env production

if [ $? -ne 0 ]; then
    print_error "Error iniciando aplicación con PM2"
    exit 1
fi

print_status "Guardando configuración PM2..."
pm2 save

print_status "Configurando reinicio automático..."
pm2 startup

print_status "Verificando estado..."
sleep 3
pm2 status

print_status "Ejecutando health check inicial..."
npm run health-check

print_status "Despliegue completado exitosamente! 🎉"
echo ""
echo "📊 Comandos útiles:"
echo "  pm2 logs websocket-quantaxperia    # Ver logs"
echo "  pm2 monit                         # Monitor en tiempo real"
echo "  pm2 restart websocket-quantaxperia # Reiniciar"
echo "  npm run health-check              # Verificar estado"
echo ""
echo "🔍 Monitoreo automático cada 5 minutos activado"
echo "📝 Logs disponibles en ./logs/"