bq ls --project_id=gcp-digital-bi | awk 'NR > 2 {print $1}' > datasets.txt

SOURCE_PROJECT="gcp-digital-bi"
TARGET_PROJECT="gcp-rd-research-dev"
TARGET_DATASET_PREFIX="mirror_"  # or leave blank if using same names

while read DATASET; do
  echo "🔎 Processing dataset: $DATASET"

  # Create target dataset if it doesn't exist
  TARGET_DATASET="${TARGET_DATASET_PREFIX}${DATASET}"
  if ! bq --project_id=$TARGET_PROJECT ls $TARGET_DATASET >/dev/null 2>&1; then
    echo "📁 Creating dataset: $TARGET_DATASET"
    bq --project_id=$TARGET_PROJECT mk --dataset $TARGET_PROJECT:$TARGET_DATASET
  fi

  # List tables in source dataset
  bq ls --project_id=$SOURCE_PROJECT $DATASET | awk 'NR > 2 {print $1}' > $DATASET.tables.txt

  while read TABLE; do
    VIEW_NAME="view_${TABLE}"
    SOURCE_TABLE="${SOURCE_PROJECT}.${DATASET}.${TABLE}"
    TARGET_VIEW="${TARGET_PROJECT}:${TARGET_DATASET}.${VIEW_NAME}"

    echo "📄 Creating view: $TARGET_VIEW"

    bq query \
      --use_legacy_sql=false \
      --project_id=$TARGET_PROJECT \
      --destination_table="$TARGET_VIEW" \
      --replace \
      "CREATE  VIEW \`${TARGET_DATASET}.${VIEW_NAME}\` AS SELECT * FROM \`${SOURCE_TABLE}\`"
      #"CREATE  VIEW \`${TARGET_PROJECT}.${TARGET_DATASET}.${VIEW_NAME}\` AS SELECT * FROM \`${SOURCE_TABLE}\`"

  done < $DATASET.tables.txt

done < datasets.txt
