#!/bin/bash
# restart-marketing.sh — безопасный перезапуск маркетинг-сервиса rodnoy.site.
# Запускать НА СЕРВЕРЕ: bash /var/www/opt.rodnoy.site/admin/scripts/restart-marketing.sh
#
# Использует setsid + nohup чтобы процесс выжил после SSH-разрыва.
# Использует точный match для pkill: "/home/deploy/.bun/bin/bun run src/index.ts"
# чтобы не убить собственную bash-сессию (как это сделал бы pkill -f "src/index.ts").
set -u

cd /home/deploy/rodnoy-marketing-service || { echo "MISSING DIR"; exit 1; }

# Backup лога (последние 500 строк)
if [ -f runtime.log ]; then
  tail -500 runtime.log > "runtime.log.prev"
fi

# Завершаем старый процесс (точный match)
OLD_PIDS=$(pgrep -f "/home/deploy/.bun/bin/bun run src/index.ts" || true)
if [ -n "$OLD_PIDS" ]; then
  echo "[restart] killing old PIDs: $OLD_PIDS"
  kill $OLD_PIDS 2>/dev/null || true
  sleep 2
  # Force kill if still alive
  STILL=$(pgrep -f "/home/deploy/.bun/bin/bun run src/index.ts" || true)
  if [ -n "$STILL" ]; then
    echo "[restart] force killing: $STILL"
    kill -9 $STILL 2>/dev/null || true
    sleep 1
  fi
fi

# Стартуем свежий
echo "[restart] starting..."
setsid /home/deploy/.bun/bin/bun run src/index.ts >> runtime.log 2>&1 < /dev/null &
disown
NEW_PID=$!
echo "[restart] new PID: $NEW_PID"

# Ждём загрузки
sleep 4

# Проверяем
echo
echo "=== Process ==="
pgrep -af "bun run src/index.ts" | head -3

echo
echo "=== HTTP probe ==="
HTTP=$(curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:3040/ 2>/dev/null)
echo "GET / -> $HTTP"

HTTP_DB=$(curl -s -o /dev/null -w "%{http_code}" "http://127.0.0.1:3040/api/comments/all?page=opt-plan" 2>/dev/null)
echo "GET /api/comments/all -> $HTTP_DB"

echo
echo "=== runtime.log tail (last 20 lines) ==="
tail -20 runtime.log

if [ "$HTTP_DB" = "200" ]; then
  echo
  echo "[restart] ✓ OK — service is healthy"
  exit 0
else
  echo
  echo "[restart] ✗ FAILED — see runtime.log"
  exit 1
fi
