#!/usr/bin/env bash
# Seed the tracked CSV and dumpling SQL fixtures for Azure import E2E.
set -euo pipefail
: "${TF_MODULE_DIR:?}"
if (($#)); then
  echo "unexpected options: $*" >&2
  exit 2
fi
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
csv_file="$script_dir/seeddata/import/csv/test.a.0001.csv"
csv_schema_file="$script_dir/seeddata/import/csv/test-schema-create.sql"
csv_table_schema_file="$script_dir/seeddata/import/csv/test.a-schema.sql"
sql_dir="$script_dir/seeddata/import/sql"
csv_files=("$csv_schema_file" "$csv_table_schema_file" "$csv_file")
for file in "${csv_files[@]}"; do
  [[ -f "$file" ]] || { echo "Missing canonical CSV bundle fixture." >&2; exit 1; }
done
sql_files=(
  "$sql_dir/bikeshare.trips-schema.sql"
  "$sql_dir/bikeshare.trips.000000000.sql"
)
for file in "${sql_files[@]}"; do
  [[ -f "$file" ]] || { echo "Missing SQL fixture file." >&2; exit 1; }
done
terraform_output() { terraform -chdir="$TF_MODULE_DIR" output -json "$1" 2>/dev/null; }
sas_token="$(terraform_output service_credentials | jq -er '.azure_blob.sas_token')" || { echo "Unable to read Azure Blob SAS." >&2; exit 1; }
storage_account="$(terraform_output object_storage | jq -er '.account_name')" || { echo "Unable to read Azure storage account." >&2; exit 1; }
sas_token="${sas_token#\?}"
tmp_dir="$(mktemp -d)"
trap 'rm -rf "$tmp_dir"' EXIT
az_blob() { az storage blob "$@" --account-name "$storage_account" --container-name import --sas-token "$sas_token" --only-show-errors; }
upload_and_verify() {
  local file="$1" blob_name="$2"
  az_blob upload --name "$blob_name" --file "$file" --overwrite true >/dev/null 2>/dev/null || { echo "Azure Blob upload failed for $blob_name." >&2; exit 1; }
  az_blob download --name "$blob_name" --file "$tmp_dir/download" --overwrite true >/dev/null 2>/dev/null || { echo "Azure Blob read-back failed for $blob_name." >&2; exit 1; }
  cmp -s "$file" "$tmp_dir/download" || { echo "Azure Blob read-back differs for $blob_name." >&2; exit 1; }
}
object_count=0
for file in "${csv_files[@]}"; do
  upload_and_verify "$file" "csv/$(basename "$file")"
  ((object_count+=1))
done
for file in "${sql_files[@]}"; do
  upload_and_verify "$file" "sql/bikeshare/$(basename "$file")"
  ((object_count+=1))
done
echo "Seeded Azure Blob import sample data (${object_count} objects)."
