#!/usr/bin/env bash

set -euo pipefail

real_path=$(echo "$PATH" | sed "s,$(dirname "$0"):,,g")
connection_args=(
  --host "${CLICKHOUSE_HOST}"
  --port "${CLICKHOUSE_NATIVE_PORT}"
  --user "${CLICKHOUSE_USER}"
  --password "${CLICKHOUSE_PASSWORD}"
  --database "${CLICKHOUSE_DATABASE}"
)

if PATH="$real_path" command -v clickhouse-client >/dev/null 2>&1; then
  PATH="$real_path" exec clickhouse-client "${connection_args[@]}" "$@"
fi

if PATH="$real_path" command -v clickhouse >/dev/null 2>&1; then
  PATH="$real_path" exec clickhouse client "${connection_args[@]}" "$@"
fi

if [[ -z "${CLICKHOUSE_CONTAINER:-}" ]]; then
  echo "clickhouse client is unavailable and CLICKHOUSE_CONTAINER is not set" >&2
  exit 1
fi

exec docker exec -i "${CLICKHOUSE_CONTAINER}" clickhouse-client \
  --user "${CLICKHOUSE_USER}" \
  --password "${CLICKHOUSE_PASSWORD}" \
  --database "${CLICKHOUSE_DATABASE}" \
  "$@"
