#!/bin/bash

# Script di gestione PM2 per GIX Flow Backend
# Utilizzo: ./pm2-manager.sh [start|stop|restart|logs|status|dev|prod]

BACKEND_DIR="/var/www/html/gix-flow/backend"
APP_NAME="gix-flow-backend"
PROD_APP_NAME="gix-flow-backend-prod"

cd "$BACKEND_DIR"

case "$1" in
    start)
        echo "🚀 Avvio del backend in modalità sviluppo..."
        npm run pm2:start
        ;;
    stop)
        echo "🛑 Stopping backend..."
        npm run pm2:stop
        ;;
    restart)
        echo "🔄 Riavvio del backend..."
        npm run pm2:restart
        ;;
    reload)
        echo "♻️ Reload del backend (zero downtime)..."
        npm run pm2:reload
        ;;
    logs)
        echo "📋 Visualizzazione logs..."
        npm run pm2:logs
        ;;
    status)
        echo "📊 Status delle applicazioni PM2..."
        npm run pm2:status
        ;;
    monitor)
        echo "📈 Apertura monitor PM2..."
        npm run pm2:monit
        ;;
    dev)
        echo "🔧 Avvio in modalità sviluppo con PM2..."
        pm2 start ecosystem.config.cjs
        ;;
    prod)
        echo "🏭 Avvio in modalità produzione..."
        pm2 start ecosystem.prod.config.cjs --env production
        ;;
    delete)
        echo "🗑️ Rimozione applicazione da PM2..."
        pm2 delete $APP_NAME 2>/dev/null || true
        pm2 delete $PROD_APP_NAME 2>/dev/null || true
        ;;
    setup)
        echo "⚙️ Setup PM2 per l'avvio automatico..."
        pm2 startup
        echo "💾 Salvataggio configurazione PM2..."
        pm2 save
        ;;
    *)
        echo "📖 Utilizzo: $0 {start|stop|restart|reload|logs|status|monitor|dev|prod|delete|setup}"
        echo ""
        echo "Comandi disponibili:"
        echo "  start   - Avvia in modalità sviluppo"
        echo "  stop    - Ferma l'applicazione"
        echo "  restart - Riavvia l'applicazione"
        echo "  reload  - Reload senza downtime"
        echo "  logs    - Mostra i logs"
        echo "  status  - Mostra lo status"
        echo "  monitor - Apre il monitor PM2"
        echo "  dev     - Avvia in modalità sviluppo"
        echo "  prod    - Avvia in modalità produzione"
        echo "  delete  - Rimuove da PM2"
        echo "  setup   - Configura avvio automatico"
        exit 1
        ;;
esac
