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

# Цель этого предстартового хука — добавить пользователя гостиной

APP_DATA_DIR="$(readlink -f "$(dirname "${BASH_SOURCE[0]}")/..")"

# дозорный файл, чтобы проверить, был ли уже инициализирован пользователь
USER_SENTINEL="${APP_DATA_DIR}/.user_created"

# имя пользователя и адрес электронной почты
USER_NAME="dfwebos"

# максимальное количество попыток и время ожидания между ними (60 секунд)
MAX_TRIES=12
SLEEP_SECS=5

# ────────────────────────────────────────────────────────────
# Полностью пропустить загрузку, если пользователь уже инициализирован
# ────────────────────────────────────────────────────────────
if [[ -f "$USER_SENTINEL" ]]; then
  echo "thelounge: user already initialised - skipping bootstrap."
  exit 0
fi

# ────────────────────────────────────────────────────────────
# Поднимите веб-сервис, чтобы все было готово к запуску.
# ────────────────────────────────────────────────────────────
echo "thelounge: starting full stack to run migrations…"
"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" \
  up -d --wait --wait-timeout 90 web

# ────────────────────────────────────────────────────────────
# Повторяйте попытку, пока пользователь не будет создан (максимум 60 секунд).
# Это должно добиться успеха с первой попытки
# Но включение цикла повторов для надежности
# ────────────────────────────────────────────────────────────
echo "thelounge: ensuring user exists…"
for ((try=1; try<=MAX_TRIES; try++)); do
  if "${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" exec -T web thelounge add "${USER_NAME}" --password "${APP_PASSWORD}" \ ; then
	touch "$USER_SENTINEL"
    echo "thelounge: user ready."
    break
  fi
  echo "  Attempt $try/$MAX_TRIES failed - retrying in ${SLEEP_SECS}s…"
  sleep "$SLEEP_SECS"
done

if [[ ! -f "$USER_SENTINEL" ]]; then
  echo "thelounge ERROR: could not create user after $MAX_TRIES attempts."
  exit 1
fi

# ────────────────────────────────────────────────────────────
# Отключите все контейнеры и позвольте DFWebOS запустить их заново.
# ────────────────────────────────────────────────────────────
echo "thelounge: bootstrap finished - stopping stack for clean start…"
"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" stop
