#!/usr/bin/env bash

set -u

BASE="/opt/pixdala"
RELEASES="$BASE/releases"
CURRENT="$BASE/current"
WEB_SERVICE="pixdala-test-web"
API_SERVICE="pixdala-test-api"
HEALTH_URL="https://im-test.bktis.ru/apps/miniapp/index.html"

TAG="${1:-}"

if [[ -z "$TAG" ]]; then
  echo "Использование: $0 <tag>"
  echo "Пример: $0 v0.1.3"
  exit 1
fi

if [[ ! "$TAG" =~ ^v[0-9]+\.[0-9]+\.[0-9]+([\-\.][0-9A-Za-z.-]+)?$ ]]; then
  echo "Ошибка: неверный формат версии."
  exit 1
fi

TARGET="$RELEASES/$TAG"

if [[ ! -d "$TARGET" ]]; then
  echo "Ошибка: release не найден:"
  echo "$TARGET"
  exit 1
fi

echo "==> Переключение TEST на $TAG..."

TMP_LINK="$BASE/.current-new"

rm -f "$TMP_LINK"
ln -s "$TARGET" "$TMP_LINK"
mv -Tf "$TMP_LINK" "$CURRENT"

echo "==> Перезапускаю $WEB_SERVICE и $API_SERVICE..."
if ! sudo systemctl restart "$WEB_SERVICE" "$API_SERVICE"; then
  echo "Ошибка: не удалось перезапустить web и/или API service."
  exit 1
fi

sleep 2

echo "==> Проверяю статус сервисов..."
if ! sudo systemctl is-active --quiet "$WEB_SERVICE" || \
   ! sudo systemctl is-active --quiet "$API_SERVICE"; then
  echo "Ошибка: web и/или API service не запустился."
  exit 1
fi

echo "==> Проверяю HTTP..."
if ! curl -fsSI "$HEALTH_URL" >/dev/null; then
  echo "Ошибка: smoke test не пройден."
  exit 1
fi

echo
echo "========================================"
echo " ROLLBACK УСПЕШНО ВЫПОЛНЕН"
echo " Версия: $TAG"
echo " Current: $(readlink -f "$CURRENT")"
echo "========================================"