#!/usr/bin/env bash
# Upsert the DAX Feishu approval-flow mapping inside the running backend.
set -euo pipefail

APPROVAL_CODE="${HELIX_DAX_FEISHU_APPROVAL_CODE:-}"
INTEGRATION_SLUG="${HELIX_DAX_FEISHU_INTEGRATION_SLUG:-}"
FLOW_KEY="${HELIX_DAX_FEISHU_APPROVAL_FLOW_KEY:-data_access_group_grant}"
COMPOSE_FILE="${HELIX_COMPOSE_FILE:-/opt/helix/compose/docker-compose.prod.yml}"

if [[ -z "${APPROVAL_CODE}" ]]; then
  echo "ERROR: HELIX_DAX_FEISHU_APPROVAL_CODE is required." >&2
  exit 2
fi

if [[ ! -f "${COMPOSE_FILE}" ]]; then
  echo "ERROR: compose file not found: ${COMPOSE_FILE}" >&2
  exit 3
fi

case "${FLOW_KEY}" in
  data_access_group_grant|data_access_service_account_grant|data_access_personal_grant)
    ;;
  *)
    echo "ERROR: unsupported HELIX_DAX_FEISHU_APPROVAL_FLOW_KEY." >&2
    exit 4
    ;;
esac

args=(
  /app/.venv/bin/python
  scripts/upsert_data_access_approval_flow.py
  --commit
  --flow-key "${FLOW_KEY}"
)
if [[ -n "${INTEGRATION_SLUG}" ]]; then
  args+=(--integration-slug "${INTEGRATION_SLUG}")
fi

docker compose -f "${COMPOSE_FILE}" exec -T \
  --workdir /app \
  -e PYTHONPATH=/app \
  -e HELIX_DAX_FEISHU_APPROVAL_CODE="${APPROVAL_CODE}" \
  backend "${args[@]}"
