#!/usr/bin/env bash
set -euo pipefail

APP_DIR="/home/stacie/public_html/aggie-api"
JAR_NAME="backend-core-0.0.1-SNAPSHOT.jar"
JAR_PATH="$APP_DIR/$JAR_NAME"
SERVICE_NAME="backend-core"
HEALTH_URL="http://127.0.0.1:8080/actuator/health"
BACKUP_DIR="$APP_DIR/backups"

echo "==> Deploying $SERVICE_NAME"

if [ ! -f "$JAR_PATH" ]; then
  echo "ERROR: jar not found at $JAR_PATH" >&2
  exit 1
fi

mkdir -p "$BACKUP_DIR"
TIMESTAMP=$(date +%Y%m%d-%H%M%S)
cp "$JAR_PATH" "$BACKUP_DIR/${JAR_NAME%.jar}-$TIMESTAMP.jar.bak"
echo "==> Backed up current jar to $BACKUP_DIR/${JAR_NAME%.jar}-$TIMESTAMP.jar.bak"

echo "==> Restarting $SERVICE_NAME"
sudo systemctl restart "$SERVICE_NAME"

echo "==> Waiting for service to come up..."
for i in $(seq 1 15); do
  sleep 2
  if curl -sf "$HEALTH_URL" >/dev/null; then
    echo "==> Health check passed"
    curl -s "$HEALTH_URL"; echo
    exit 0
  fi
  echo "  ...still waiting ($i/15)"
done

echo "ERROR: Health check failed after retries. Recent logs:" >&2
sudo journalctl -u "$SERVICE_NAME" --no-pager -n 50
exit 1