#!/bin/bash

# 🚀 Script de Deploy Local - Liberi Kids
# Execute: chmod +x scripts/deploy-local.sh && ./scripts/deploy-local.sh

echo "🚀 Iniciando deploy local do Liberi Kids..."

# Cores para output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# Função para log colorido
log() {
    echo -e "${GREEN}[INFO]${NC} $1"
}

warn() {
    echo -e "${YELLOW}[WARN]${NC} $1"
}

error() {
    echo -e "${RED}[ERROR]${NC} $1"
}

# Verificar se Node.js está instalado
if ! command -v node &> /dev/null; then
    error "Node.js não encontrado. Instale Node.js 18+ primeiro."
    exit 1
fi

# Verificar versão do Node.js
NODE_VERSION=$(node -v | cut -d'v' -f2 | cut -d'.' -f1)
if [ "$NODE_VERSION" -lt 18 ]; then
    error "Node.js versão 18+ é necessária. Versão atual: $(node -v)"
    exit 1
fi

log "Node.js $(node -v) encontrado ✓"

# Instalar dependências do servidor
log "Instalando dependências do servidor..."
npm install
if [ $? -ne 0 ]; then
    error "Falha ao instalar dependências do servidor"
    exit 1
fi

# Entrar na pasta do cliente
cd client

# Instalar dependências do cliente
log "Instalando dependências do frontend..."
npm install
if [ $? -ne 0 ]; then
    error "Falha ao instalar dependências do frontend"
    exit 1
fi

# Fazer build do frontend
log "Fazendo build do frontend..."
npm run build
if [ $? -ne 0 ]; then
    error "Falha no build do frontend"
    exit 1
fi

# Voltar para pasta raiz
cd ..

# Verificar se arquivo .env existe
if [ ! -f ".env" ]; then
    warn "Arquivo .env não encontrado. Criando exemplo..."
    cat > .env << EOF
# Configurações do Supabase
SUPABASE_URL=https://seu-projeto.supabase.co
SUPABASE_ANON_KEY=sua_chave_anonima_aqui

# Configurações do servidor
NODE_ENV=production
PORT=5000
EOF
    warn "Configure o arquivo .env com suas credenciais do Supabase!"
    echo "Edite o arquivo .env antes de continuar."
    exit 1
fi

# Verificar se PM2 está instalado
if ! command -v pm2 &> /dev/null; then
    log "PM2 não encontrado. Instalando PM2..."
    npm install -g pm2
fi

# Parar processo anterior se existir
pm2 delete liberi-kids 2>/dev/null || true

# Iniciar aplicação com PM2
log "Iniciando aplicação com PM2..."
pm2 start server-supabase.js --name "liberi-kids" --env production

# Configurar PM2 para iniciar automaticamente
log "Configurando PM2 para inicialização automática..."
pm2 startup
pm2 save

# Status final
log "Deploy concluído com sucesso! 🎉"
echo ""
echo -e "${BLUE}📊 Status da aplicação:${NC}"
pm2 status

echo ""
echo -e "${BLUE}🌐 Acesso:${NC}"
echo "  Local: http://localhost:5000"
echo "  Rede: http://$(hostname -I | awk '{print $1}'):5000"

echo ""
echo -e "${BLUE}📋 Comandos úteis:${NC}"
echo "  Ver logs: pm2 logs liberi-kids"
echo "  Reiniciar: pm2 restart liberi-kids"
echo "  Parar: pm2 stop liberi-kids"
echo "  Status: pm2 status"

echo ""
log "Aplicação rodando em produção! ✓"
