#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" SQL_FILE="${SCRIPT_DIR}/init_waf_logs_tables.sql" if [[ ! -f "${SQL_FILE}" ]]; then echo "[ERROR] SQL file not found: ${SQL_FILE}" exit 1 fi if ! command -v clickhouse-client >/dev/null 2>&1; then echo "[ERROR] clickhouse-client not found. Please install ClickHouse client first." exit 1 fi CH_HOST="${CH_HOST:-127.0.0.1}" CH_PORT="${CH_PORT:-9000}" CH_USER="${CH_USER:-default}" CH_PASSWORD="${CH_PASSWORD:-}" CH_DATABASE="${CH_DATABASE:-default}" args=(--host "${CH_HOST}" --port "${CH_PORT}" --user "${CH_USER}") if [[ -n "${CH_PASSWORD}" ]]; then args+=(--password "${CH_PASSWORD}") fi echo "[INFO] creating database if not exists: ${CH_DATABASE}" clickhouse-client "${args[@]}" --query "CREATE DATABASE IF NOT EXISTS ${CH_DATABASE}" echo "[INFO] initializing tables in database: ${CH_DATABASE}" clickhouse-client "${args[@]}" --database "${CH_DATABASE}" < "${SQL_FILE}" echo "[INFO] checking table status ..." clickhouse-client "${args[@]}" --database "${CH_DATABASE}" --query \ "SELECT name, engine FROM system.tables WHERE database='${CH_DATABASE}' AND name IN ('logs_ingest','dns_logs_ingest') ORDER BY name" echo "[OK] ClickHouse ingest tables are ready in database '${CH_DATABASE}'"