#!/bin/bash

# Salir si hay algún error
set -e

echo "🚀 Iniciando post-deploy..."

cd /var/www/html/ivanar/backend

# Verificar que estamos en el directorio correcto
if [ ! -f "ecosystem.config.js" ]; then
    echo "❌ Error: No se encuentra ecosystem.config.js"
    exit 1
fi

# Extraer DATABASE_URL del ecosystem.config.js
echo "📦 Extrayendo configuración de base de datos..."
DATABASE_URL=$(/usr/local/bin/.nvm/versions/node/v20.17.0/bin/node -e "
    const ecosystem = require('./ecosystem.config.js');
    const dbUrl = ecosystem.apps[0].env.DATABASE_URL;
    console.log(dbUrl);
")

if [ -z "$DATABASE_URL" ]; then
    echo "❌ Error: No se pudo obtener DATABASE_URL del ecosystem.config.js"
    exit 1
fi

cd current

# Verificar que Prisma CLI esté disponible
echo "🔍 Verificando Prisma CLI..."
if ! [ -f "./node_modules/.bin/prisma" ]; then
    echo "❌ Error: Prisma CLI no encontrado en node_modules"
    echo "Asegúrate de que @prisma/client esté instalado correctamente"
    exit 1
fi

# Verificar que el cliente de Prisma esté generado
echo "🔍 Verificando Prisma Client..."
if ! [ -d "./node_modules/.prisma" ] || ! [ -d "./node_modules/@prisma/client" ]; then
    echo "⚙️ Generando Prisma Client..."
    DATABASE_URL="$DATABASE_URL" ./node_modules/.bin/prisma generate
fi

# Ejecutar migraciones de Prisma
echo "🔄 Ejecutando migraciones de base de datos..."
DATABASE_URL="$DATABASE_URL" ./node_modules/.bin/prisma migrate deploy

# Verificar si las migraciones fueron exitosas
if [ $? -eq 0 ]; then
    echo "✅ Migraciones completadas exitosamente"
else
    echo "❌ Error en las migraciones"
    exit 1
fi

cd ..

# Reiniciar la aplicación con PM2
echo "🔄 Reiniciando aplicación..."
pm2 reload ecosystem.config.js

echo "✅ Post-deploy completado exitosamente!"