#!/bin/bash
# Script de Deploy para VPS
# Este script faz upload do código e configura a aplicação na VPS

set -e

# Configurações
VPS_HOST="72.60.20.31"
VPS_USER="root"
VPS_PASSWORD="#@Doca2535220"
VPS_APP_DIR="/var/www/maktubia-backend"
APP_NAME="maktubia-backend"

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

echo -e "${GREEN}🚀 Iniciando deploy do Maktubia Backend...${NC}"

# Verificar se está no diretório correto
if [ ! -f "app.js" ]; then
    echo -e "${RED}❌ Erro: Execute este script a partir do diretório raiz do projeto${NC}"
    exit 1
fi

# Criar arquivo temporário com credenciais
SSH_PASS=$(mktemp)
echo "$VPS_PASSWORD" > "$SSH_PASS"
chmod 600 "$SSH_PASS"

# Instalar sshpass se não estiver instalado (para automação com senha)
if ! command -v sshpass &> /dev/null; then
    echo -e "${YELLOW}📦 Instalando sshpass...${NC}"
    if [[ "$OSTYPE" == "darwin"* ]]; then
        brew install hudochenkov/sshpass/sshpass
    elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
        sudo apt-get install -y sshpass
    fi
fi

# Criar backup da versão anterior
echo -e "${YELLOW}📦 Criando backup da versão anterior...${NC}"
sshpass -f "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$VPS_USER@$VPS_HOST" \
    "if [ -d '$VPS_APP_DIR' ]; then
        tar -czf /tmp/${APP_NAME}-backup-$(date +%Y%m%d-%H%M%S).tar.gz -C $VPS_APP_DIR .
        echo 'Backup criado'
    fi"

# Criar diretório se não existir
echo -e "${YELLOW}📁 Criando diretório na VPS...${NC}"
sshpass -f "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$VPS_USER@$VPS_HOST" \
    "mkdir -p $VPS_APP_DIR"

# Excluir arquivos desnecessários
echo -e "${YELLOW}🧹 Preparando arquivos...${NC}"
rm -rf .git
rm -rf node_modules
rm -rf logs/*
rm -f .env
rm -f env.local

# Criar arquivo .gitignore temporário
echo "node_modules/" > .gitignore
echo ".env" >> .gitignore
echo "logs/" >> .gitignore
echo ".git/" >> .gitignore

# Fazer upload dos arquivos
echo -e "${YELLOW}📤 Fazendo upload dos arquivos...${NC}"
sshpass -f "$SSH_PASS" rsync -avz --progress \
    --exclude 'node_modules' \
    --exclude '.git' \
    --exclude 'logs' \
    --exclude '.env' \
    --exclude 'env.local' \
    --exclude '*.log' \
    ./ "$VPS_USER@$VPS_HOST:$VPS_APP_DIR/"

# Limpar arquivo temporário
rm -f "$SSH_PASS"

# Executar setup na VPS
echo -e "${YELLOW}⚙️  Configurando aplicação na VPS...${NC}"
sshpass -f "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$VPS_USER@$VPS_HOST" <<'ENDSSH'
cd /var/www/maktubia-backend

# Instalar dependências
echo "📦 Instalando dependências..."
npm install --production

# Criar arquivo .env se não existir
if [ ! -f .env ]; then
    echo "📝 Criando arquivo .env..."
    cat > .env <<'EOF'
NODE_ENV=production
PORT=8000
DATABASE=postgres

POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_DB=maktubia_points
POSTGRES_USER=postgres
POSTGRES_PASSWORD=@21062014

JWT_SECRET=maktubia_jwt_secret_production_change_me
JWT_EXPIRE=30d

REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=

SESSION_SECRET=maktubia-production-secret-change-me
ALLOWED_ORIGINS=https://seu-dominio.com,http://seu-dominio.com
LOG_LEVEL=info

FCM_SERVICE_ACCOUNT_PATH=./config/firebase-service-account.json
EOF
    echo "⚠️  ATENÇÃO: Ajuste as variáveis de ambiente no arquivo .env!"
fi

# Criar diretórios necessários
mkdir -p uploads logs tmp

# Dar permissões
chmod -R 755 .
chmod -R 777 uploads logs tmp

# Parar aplicação anterior se estiver rodando
pm2 delete maktubia-backend || true

# Iniciar aplicação com PM2
echo "🚀 Iniciando aplicação com PM2..."
pm2 start app.js --name maktubia-backend

# Salvar configuração do PM2
pm2 save

# Configurar PM2 para iniciar automaticamente
pm2 startup systemd -u root --hp /root

echo "✅ Aplicação configurada e iniciada!"
ENDSSH

# Limpar arquivo temporário
rm -f "$SSH_PASS"

echo -e "${GREEN}✅ Deploy concluído com sucesso!${NC}"
echo ""
echo -e "${YELLOW}📋 Próximos passos:${NC}"
echo "   1. Conecte-se à VPS: ssh $VPS_USER@$VPS_HOST"
echo "   2. Edite o arquivo .env: nano $VPS_APP_DIR/.env"
echo "   3. Configure o Nginx: ./deploy/configure-nginx.sh"
echo "   4. Configure SSL: sudo certbot --nginx -d seu-dominio.com"
echo ""
echo -e "${YELLOW}📊 Comandos úteis:${NC}"
echo "   - Ver logs: pm2 logs maktubia-backend"
echo "   - Status: pm2 status"
echo "   - Reiniciar: pm2 restart maktubia-backend"
echo "   - Parar: pm2 stop maktubia-backend"

