#!/usr/bin/env bash
#
# Проверяет, что новый мир генератора не смешается со старым.

set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"

COMPOSE_BIN="${COMPOSE_BIN:-docker compose}"
KAFKA_BOOTSTRAP_SERVERS_HOST="${KAFKA_BOOTSTRAP_SERVERS_HOST:-localhost:9092}"
GENERATOR_METRICS_URL_HOST="${GENERATOR_METRICS_URL_HOST:-http://localhost:9109/metrics}"
CLICKHOUSE_SERVICE="${CLICKHOUSE_SERVICE:-clickhouse}"
CLICKHOUSE_DB="${CLICKHOUSE_DB:-default}"
CLICKHOUSE_USER="${CLICKHOUSE_USER:-default}"
CLICKHOUSE_PASSWORD="${CLICKHOUSE_PASSWORD:-123456}"
CHECK_MODE="${1:-clean}"

cd "${REPO_ROOT}"

if [[ "${CHECK_MODE}" != "clean" && "${CHECK_MODE}" != "continue" ]]; then
  echo "Ошибка: неизвестный режим предпроверки: ${CHECK_MODE}" >&2
  exit 2
fi

if [[ "${CHECK_MODE}" == "clean" ]]; then
  echo "Предпроверка: live-генератор не должен быть запущен."
  PYTHONPATH="${REPO_ROOT}/generator/src" \
    uv run --with-requirements generator/requirements.txt \
      python -m clickstream_generator.stand_clean \
      --mode live \
      --live-metrics-url "${GENERATOR_METRICS_URL_HOST}"
fi

echo "Предпроверка: Kafka data-топики и STG должны быть пустыми или state совместим."

if ! stg_counts="$(${COMPOSE_BIN} exec -T "${CLICKHOUSE_SERVICE}" clickhouse-client \
    --user="${CLICKHOUSE_USER}" \
    --password="${CLICKHOUSE_PASSWORD}" \
    --database="${CLICKHOUSE_DB}" \
    --format=TSV \
    --query "
SELECT
    (SELECT count() FROM stg.browser_raw) AS browser_raw,
    (SELECT count() FROM stg.location_raw) AS location_raw,
    (SELECT count() FROM stg.device_raw) AS device_raw,
    (SELECT count() FROM stg.geo_raw) AS geo_raw
")"; then
  echo "Ошибка: не удалось проверить STG через ClickHouse." >&2
  echo "Проверьте, что ClickHouse запущен и DDL применён: make ddl" >&2
  echo "${stg_counts}" >&2
  exit 1
fi

KAFKA_BOOTSTRAP_SERVERS="${KAFKA_BOOTSTRAP_SERVERS_HOST}" \
GEN_DATA_DIR="${REPO_ROOT}/data" \
PYTHONPATH="${REPO_ROOT}/generator/src" \
  uv run --with-requirements generator/requirements.txt \
    python -m clickstream_generator.stand_clean \
    --mode "${CHECK_MODE}" \
    --kafka-bootstrap-servers "${KAFKA_BOOTSTRAP_SERVERS_HOST}" \
    --stg-counts "${stg_counts}"
