#!/bin/bash
set -e
TS=$(date +%Y%m%d_%H%M%S)
TRASH=/home/admin/.trash/invite-rule-532-$TS
mkdir -p "$TRASH"
cd /home/admin/docker-projects/sub2api
cp backend/internal/service/invite_commission.go "$TRASH/invite_commission.go.before"
cp backend/server "$TRASH/server.before"
cp /tmp/invite_commission.go.deploy backend/internal/service/invite_commission.go

echo '=== remote rule check ==='
grep -n 'InviteLevel1RateBP\|InviteLevel2RateBP\|InviteLevel3RateBP' backend/internal/service/invite_commission.go

echo
echo '=== build backend on server ==='
cd /home/admin/docker-projects/sub2api/backend
/usr/local/go/bin/go build -buildvcs=false -tags embed -o server ./cmd/server/
ls -lh server

echo
echo '=== listener-based stop before script restart ==='
pid=$(sudo lsof -tiTCP:8090 -sTCP:LISTEN | head -n1 || true)
echo "listener_pid=$pid"
if [ -n "$pid" ]; then
  kill -TERM "$pid" || true
  sleep 3
fi
if sudo lsof -tiTCP:8090 -sTCP:LISTEN >/dev/null 2>&1; then
  pid=$(sudo lsof -tiTCP:8090 -sTCP:LISTEN | head -n1)
  echo "force_kill_pid=$pid"
  kill -KILL "$pid" || true
  sleep 1
fi
if sudo lsof -tiTCP:8090 -sTCP:LISTEN >/dev/null 2>&1; then
  echo 'port 8090 still occupied'
  sudo ss -ltnp | grep 8090 || true
  exit 1
fi

echo
echo '=== start via script ==='
cd /home/admin/docker-projects/sub2api/deploy
bash start-sub2api.sh

echo
echo '=== local health ==='
curl -fsS http://127.0.0.1:8090/health
echo

echo '=== current listener ==='
pid=$(sudo lsof -tiTCP:8090 -sTCP:LISTEN | head -n1)
ps -fp "$pid"
readlink -f "/proc/$pid/exe"

echo
echo '=== recent log tail ==='
tail -n 40 /home/admin/docker-projects/sub2api/data/sub2api.log || true
