#!/bin/bash
# =============================================================================
# clickhouse-init.sh — Pre-process shared SQL files for integration testing
#
# Copies SQL from /initdb-src/ to /tmp, patches credentials, then executes.
# =============================================================================
set -e

SRC_DIR="/initdb-src"
TMP_DIR="/tmp/initdb-patched"
USER_FILES="/var/lib/clickhouse/user_files"
mkdir -p "$TMP_DIR"

# Copier les CSV de référence dans user_files (dictionnaires navigateurs)
for csv in "$SRC_DIR"/*.csv; do
    [ -f "$csv" ] || continue
    fname=$(basename "$csv")
    if [ ! -f "$USER_FILES/$fname" ]; then
        cp "$csv" "$USER_FILES/$fname"
        echo "[init] CSV copié : $fname"
    fi
done

for f in "$SRC_DIR"/*.sql; do
    [ -f "$f" ] || continue
    base=$(basename "$f")
    echo "[init] Patching $base"
    sed \
        -e "s/USER 'admin'/USER 'default'/g" \
        -e "s/PASSWORD 'CHANGE_ME'/PASSWORD ''/g" \
        -e "s/PASSWORD 'ChangeMe'/PASSWORD ''/g" \
        "$f" > "$TMP_DIR/$base"
done

for f in "$TMP_DIR"/*.sql; do
    [ -f "$f" ] || continue
    base=$(basename "$f")
    echo "[init] Executing $base"
    # 10_perf_indexes.sql uses ALTER TABLE ADD INDEX which may fail if index
    # already exists — allow non-zero exit for migration/perf scripts
    if [[ "$base" == 10_* ]]; then
        clickhouse-client --multiquery < "$f" || echo "[init] WARNING: $base had errors (expected for duplicate indexes)"
    else
        clickhouse-client --multiquery < "$f"
    fi
done

echo "[init] All SQL files executed successfully"
