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

: "${ALICLOUD_PROFILE:?ALICLOUD_PROFILE is required}"
: "${ALICLOUD_REGION:?ALICLOUD_REGION is required}"

privatelink="$(terraform output -json privatelink)"
if [[ "$(jq -r '.enabled' <<<"$privatelink")" != "true" ]]; then
  exit 0
fi

service_id="$(jq -r '.mysql.service_id' <<<"$privatelink")"
connections="$(aliyun privatelink ListVpcEndpointConnections \
  --profile "$ALICLOUD_PROFILE" \
  --RegionId "$ALICLOUD_REGION" \
  --ServiceId "$service_id")"

blocking="$(jq -r '
  [(.Connections // .VpcEndpointConnections // [])[]
    | select((.ConnectionStatus // .Status // "") as $status
      | ($status != "Disconnected" and $status != "ServiceDeleted"))
    | [.EndpointId, (.EndpointOwnerId | tostring), (.ConnectionStatus // .Status)]
    | @tsv] | .[]?
' <<<"$connections")"

if [[ -n "$blocking" ]]; then
  printf '%s\n' "$blocking" >&2
  echo "Remove the listed Alibaba Cloud PrivateLink endpoint connections before deep sleep." >&2
  exit 1
fi
