#!/usr/bin/env bash
# Start OXY Secure Transfer: backend (3001) + Next.js frontend (3000).
# Usage: ./run-dev.sh   or   bash run-dev.sh
#
# Recovery policies are stored in SQLite (default: backend/data/recovery.db).
# Override path: RECOVERY_DB_PATH=/path/to/file.db ./run-dev.sh

set -euo pipefail

ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$ROOT"

kill_port() {
  local port="$1"
  if command -v lsof >/dev/null 2>&1; then
    local pids
    pids="$(lsof -t -iTCP:"$port" -sTCP:LISTEN 2>/dev/null || true)"
    if [[ -n "${pids}" ]]; then
      echo "Stopping listener(s) on port $port: $pids"
      kill $pids 2>/dev/null || true
      sleep 1
    fi
  else
    echo "Note: lsof not found; skip freeing port $port"
  fi
}

echo "Freeing ports 3001 and 3000 (if in use)…"
kill_port 3001
kill_port 3000

echo "Starting backend on http://localhost:3001 …"
node backend/server.js &
BACK_PID=$!

cleanup() {
  if kill -0 "$BACK_PID" 2>/dev/null; then
    echo "Stopping backend (pid $BACK_PID)…"
    kill "$BACK_PID" 2>/dev/null || true
    wait "$BACK_PID" 2>/dev/null || true
  fi
}
trap cleanup EXIT INT TERM

echo "Starting frontend on http://localhost:3000 …"
npm run dev -w frontend
