#!/usr/bin/env bash
# ============================================================
# Premium ETL — deploy script (เฟส 3) · Google Cloud
# ลูกค้าเป็นเจ้าของ GCP project 100% (โปร่งใส) — รันทีละบล็อก
# ============================================================
set -euo pipefail

PROJECT="urbanactive-data"          # <- แก้เป็น project จริง
REGION="asia-southeast1"
SA="etl-runner@${PROJECT}.iam.gserviceaccount.com"

# 1) เปิด API ที่ต้องใช้
gcloud services enable run.googleapis.com cloudscheduler.googleapis.com \
  sqladmin.googleapis.com secretmanager.googleapis.com cloudbuild.googleapis.com

# 2) Cloud SQL (Postgres) — สร้าง instance + database แล้วลง schema
gcloud sql instances create urbanactive-pg --database-version=POSTGRES_15 \
  --tier=db-f1-micro --region="${REGION}"
gcloud sql databases create warehouse --instance=urbanactive-pg
# psql "$DATABASE_URL" -f ../phase2/schema.sql   # ลงตาราง + views (เฟส 2)

# 3) Secret Manager — เก็บความลับ (ไม่ hardcode)
for S in DATABASE_URL SHOPEE_ACCESS_TOKEN LAZADA_APP_KEY TIKTOK_ACCESS_TOKEN SHOPIFY_ACCESS_TOKEN TG_TOKEN TG_CHAT; do
  gcloud secrets create "$S" --replication-policy=automatic 2>/dev/null || true
  # echo -n "<ค่า>" | gcloud secrets versions add "$S" --data-file=-
done

# 4) Deploy Cloud Run (build จาก source อัตโนมัติ) + ผูก secret + Cloud SQL
gcloud run deploy premium-etl --source . --region "${REGION}" \
  --no-allow-unauthenticated --service-account "${SA}" \
  --add-cloudsql-instances "${PROJECT}:${REGION}:urbanactive-pg" \
  --set-secrets "DATABASE_URL=DATABASE_URL:latest,SHOPEE_ACCESS_TOKEN=SHOPEE_ACCESS_TOKEN:latest,LAZADA_APP_KEY=LAZADA_APP_KEY:latest,TIKTOK_ACCESS_TOKEN=TIKTOK_ACCESS_TOKEN:latest,SHOPIFY_ACCESS_TOKEN=SHOPIFY_ACCESS_TOKEN:latest,TG_TOKEN=TG_TOKEN:latest,TG_CHAT=TG_CHAT:latest"

RUN_URL=$(gcloud run services describe premium-etl --region "${REGION}" --format='value(status.url)')

# 5) Cloud Scheduler — ยิงทุก 4 ชม. (OIDC auth)
gcloud scheduler jobs create http premium-etl-4h \
  --schedule "0 */4 * * *" --time-zone "Asia/Bangkok" \
  --uri "${RUN_URL}" --http-method GET \
  --oidc-service-account-email "${SA}"

echo "✓ deployed: ${RUN_URL}"
