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

command -v databuilder >/dev/null 2>&1 || { echo "ERROR: databuilder CLI not found."; exit 1; }

CATALOG="${CATALOG:-catalog_op}"
SCHEMA="${SCHEMA:-default}"
OP_NAME="${OP_NAME:-triple_op}"
WORK_DIR="${WORK_DIR:-/tmp/operator_cli_test}"
mkdir -p "${WORK_DIR}"

cat > "${WORK_DIR}/create_operator.json" <<JSON
{
  "name": "${OP_NAME}",
  "alias": "SDK Test Operator $(date +%s)",
  "comment": "created by 01_operator_create.sh",
  "usage": "for sdk e2e smoke test",
  "properties": {"creator": "sdk-test"}
}
JSON

set +e
output="$(databuilder operator create \
  --catalog-name "${CATALOG}" \
  --schema-name "${SCHEMA}" \
  --body-file "${WORK_DIR}/create_operator.json" 2>&1)"
status=$?
set -e
printf "%s\n" "${output}"

if [[ ${status} -ne 0 ]]; then
  if [[ "${output}" == *'"code":"AlreadyExists"'* || "${output}" == *"AlreadyExists"* ]]; then
    echo "[info] operator already exists, continue."
  else
    exit "${status}"
  fi
fi
