#!/usr/bin/env bash
# Deploy para o servidor preservando .env e uploads.
# Uso: export SSHPASS='sua_senha_ssh' && ./scripts/deploy-servidor.sh usuario@host
set -euo pipefail
REMOTE="${1:-root@192.168.2.30}"
REMOTE_DIR="${2:-/var/www/fluminense-site}"
ROOT="$(cd "$(dirname "$0")/.." && pwd)"

if [[ -z "${SSHPASS:-}" ]]; then
  echo "Defina SSHPASS com a senha SSH, ex.: export SSHPASS='...'"
  exit 1
fi

echo ">>> Salvando .env no servidor..."
sshpass -e ssh -o StrictHostKeyChecking=accept-new "$REMOTE" \
  "test -f $REMOTE_DIR/.env && cat $REMOTE_DIR/.env" > /tmp/fluminense-deploy-env.bak || true

echo ">>> Backup de public/uploads no servidor..."
sshpass -e ssh -o StrictHostKeyChecking=accept-new "$REMOTE" \
  "cd $REMOTE_DIR && tar czf /tmp/fluminense-uploads-backup.tgz public/uploads 2>/dev/null || true"

echo ">>> Enviando código..."
sshpass -e rsync -avz \
  --delete \
  --exclude 'public/uploads/' \
  --exclude 'public/uploads/*' \
  --exclude node_modules \
  --exclude .next \
  --exclude .git \
  --exclude .env \
  -e "ssh -o StrictHostKeyChecking=accept-new" \
  "$ROOT/" "$REMOTE:$REMOTE_DIR/"

echo ">>> Restaurando public/uploads..."
sshpass -e ssh -o StrictHostKeyChecking=accept-new "$REMOTE" \
  "cd $REMOTE_DIR && tar xzf /tmp/fluminense-uploads-backup.tgz 2>/dev/null || true; mkdir -p public/uploads"

echo ">>> Restaurando .env..."
if [[ -s /tmp/fluminense-deploy-env.bak ]]; then
  sshpass -e scp /tmp/fluminense-deploy-env.bak "$REMOTE:$REMOTE_DIR/.env"
else
  echo "AVISO: não havia .env salvo; crie manualmente no servidor."
fi

echo ">>> prisma db push + build + pm2..."
sshpass -e ssh -o StrictHostKeyChecking=accept-new "$REMOTE" \
  "cd $REMOTE_DIR && npx prisma db push --accept-data-loss && npm install && npm run build && pm2 restart fluminense-site && pm2 save"

echo ">>> Pronto."
