From c52bb7e767cc3f6fe2499fecf91426ebfd844a80 Mon Sep 17 00:00:00 2001 From: zouantchaw <44246692+zouantchaw@users.noreply.github.com> Date: Fri, 27 Feb 2026 15:28:09 -0500 Subject: [PATCH] fix(dataconnect): split fast connector sync from full schema sync --- Makefile | 5 ++-- .../DOCUMENTS/backend_manual.md | 24 ++++++++++++++---- .../documents/data connect/backend_manual.md | 24 ++++++++++++++---- makefiles/dataconnect.mk | 25 +++++++++++++------ 4 files changed, 59 insertions(+), 19 deletions(-) diff --git a/Makefile b/Makefile index 71d0b18d..4a029884 100644 --- a/Makefile +++ b/Makefile @@ -66,7 +66,8 @@ help: @echo " make dataconnect-deploy [ENV=dev] Deploy Data Connect schemas (dev/staging)" @echo " make dataconnect-sql-migrate [ENV=dev] Apply pending SQL migrations" @echo " make dataconnect-generate-sdk [ENV=dev] Regenerate Data Connect client SDK" - @echo " make dataconnect-sync [ENV=dev] Full sync: deploy + migrate + generate SDK" + @echo " make dataconnect-sync [ENV=dev] Fast sync: deploy connector + generate SDK" + @echo " make dataconnect-sync-full [ENV=dev] Full sync: deploy + migrate + generate SDK" @echo " make dataconnect-seed [ENV=dev] Seed database with test data" @echo " make dataconnect-clean [ENV=dev] Delete all data from Data Connect" @echo " make dataconnect-test [ENV=dev] Test Data Connect deployment (dry-run)" @@ -101,6 +102,6 @@ help: @echo "" @echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" @echo " 💡 Tip: Run 'make mobile-install' first for mobile development" - @echo " 💡 Tip: Use 'make dataconnect-sync' after schema changes" + @echo " 💡 Tip: Use 'make dataconnect-sync-full' after schema changes" @echo " 💡 Tip: Default ENV=dev, use ENV=staging for staging environment" @echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" diff --git a/docs/BACKEND/DATACONNECT_GUIDES/DOCUMENTS/backend_manual.md b/docs/BACKEND/DATACONNECT_GUIDES/DOCUMENTS/backend_manual.md index c31b0f8c..90e1dead 100644 --- a/docs/BACKEND/DATACONNECT_GUIDES/DOCUMENTS/backend_manual.md +++ b/docs/BACKEND/DATACONNECT_GUIDES/DOCUMENTS/backend_manual.md @@ -186,7 +186,8 @@ client.createInvoice(); | dataconnect-deploy | Deploy schemas | | dataconnect-sql-migrate | Apply DB migrations | | dataconnect-generate-sdk | Generate SDK | -| dataconnect-sync | Full backend update | +| dataconnect-sync | Fast connector + SDK sync | +| dataconnect-sync-full | Full backend update | | dataconnect-test | Test without breaking | | dataconnect-seed | Insert seed data | | dataconnect-bootstrap-db | Create Cloud SQL | @@ -195,7 +196,7 @@ client.createInvoice(); ## 9. Correct Backend Workflow -### Production Flow +### Query/Connector Flow ```bash make dataconnect-sync @@ -203,9 +204,22 @@ make dataconnect-sync Steps: -1. Deploy schema -2. Run SQL migrations -3. Generate SDK +1. Deploy connector +2. Generate SDK + +--- + +### Full Schema Flow + +```bash +make dataconnect-sync-full +``` + +Steps: + +1. Deploy schema +2. Run SQL migrations +3. Generate SDK --- diff --git a/internal/launchpad/assets/documents/data connect/backend_manual.md b/internal/launchpad/assets/documents/data connect/backend_manual.md index c31b0f8c..90e1dead 100644 --- a/internal/launchpad/assets/documents/data connect/backend_manual.md +++ b/internal/launchpad/assets/documents/data connect/backend_manual.md @@ -186,7 +186,8 @@ client.createInvoice(); | dataconnect-deploy | Deploy schemas | | dataconnect-sql-migrate | Apply DB migrations | | dataconnect-generate-sdk | Generate SDK | -| dataconnect-sync | Full backend update | +| dataconnect-sync | Fast connector + SDK sync | +| dataconnect-sync-full | Full backend update | | dataconnect-test | Test without breaking | | dataconnect-seed | Insert seed data | | dataconnect-bootstrap-db | Create Cloud SQL | @@ -195,7 +196,7 @@ client.createInvoice(); ## 9. Correct Backend Workflow -### Production Flow +### Query/Connector Flow ```bash make dataconnect-sync @@ -203,9 +204,22 @@ make dataconnect-sync Steps: -1. Deploy schema -2. Run SQL migrations -3. Generate SDK +1. Deploy connector +2. Generate SDK + +--- + +### Full Schema Flow + +```bash +make dataconnect-sync-full +``` + +Steps: + +1. Deploy schema +2. Run SQL migrations +3. Generate SDK --- diff --git a/makefiles/dataconnect.mk b/makefiles/dataconnect.mk index 3ae3410e..4c9f7ef9 100644 --- a/makefiles/dataconnect.mk +++ b/makefiles/dataconnect.mk @@ -2,11 +2,14 @@ # Usage examples: # make dataconnect-sync DC_ENV=dev +# make dataconnect-sync-full DC_ENV=dev # make dataconnect-seed DC_ENV=validation # make dataconnect-clean DC_ENV=validation # make dataconnect-generate-sdk DC_ENV=dev # DC_ENV ?= dev +DC_LOCATION ?= us-central1 +DC_CONNECTOR_ID ?= example DC_SERVICE_DEV := krow-workforce-db DC_SERVICE_VALIDATION := krow-workforce-db-validation @@ -19,7 +22,7 @@ else $(error Invalid DC_ENV '$(DC_ENV)'. Use DC_ENV=dev or DC_ENV=validation) endif -.PHONY: dataconnect-enable-apis dataconnect-init dataconnect-deploy dataconnect-sql-migrate dataconnect-generate-sdk dataconnect-sync dataconnect-bootstrap-db check-gcloud-beta dataconnect-clean dataconnect-bootstrap-validation-db dataconnect-file dataconnect-file-validation dataconnect-file-dev dataconnect-seed dataconnect-test +.PHONY: dataconnect-enable-apis dataconnect-init dataconnect-deploy dataconnect-sql-migrate dataconnect-generate-sdk dataconnect-sync dataconnect-sync-full dataconnect-bootstrap-db check-gcloud-beta dataconnect-clean dataconnect-bootstrap-validation-db dataconnect-file dataconnect-file-validation dataconnect-file-dev dataconnect-seed dataconnect-test #creation dataconnect file dataconnect-file: @@ -79,15 +82,23 @@ dataconnect-generate-sdk: dataconnect-file @firebase dataconnect:sdk:generate --project=$(FIREBASE_ALIAS) @echo "✅ Data Connect SDK generation completed for [$(DC_ENV)]." -# Unified backend schema update workflow (schema -> deploy -> SDK) +# Fast sync workflow for connector/query changes (deploy connector -> SDK) dataconnect-sync: dataconnect-file - @echo "--> [1/3] Deploying Data Connect [$(DC_SERVICE)]..." - @firebase deploy --only dataconnect:$(DC_SERVICE) --project=$(FIREBASE_ALIAS) + @echo "--> [1/2] Deploying Data Connect connector [$(DC_SERVICE):$(DC_CONNECTOR_ID)]..." + @firebase deploy --only dataconnect:$(DC_SERVICE):$(DC_CONNECTOR_ID) --project=$(FIREBASE_ALIAS) --force + @echo "--> [2/2] Regenerating SDK [$(DC_SERVICE)]..." + @firebase dataconnect:sdk:generate --project=$(FIREBASE_ALIAS) + @echo "✅ Data Connect connector + SDK sync completed for [$(DC_ENV)]." + +# Full backend schema update workflow (schema -> migrate -> SDK) +dataconnect-sync-full: dataconnect-file + @echo "--> [1/3] Deploying full Data Connect service [$(DC_SERVICE)]..." + @firebase deploy --only dataconnect:$(DC_SERVICE) --project=$(FIREBASE_ALIAS) --force @echo "--> [2/3] Applying SQL migrations [$(DC_SERVICE)]..." - @firebase dataconnect:sql:migrate --project=$(FIREBASE_ALIAS) + @firebase dataconnect:sql:migrate --project=$(FIREBASE_ALIAS) --service $(DC_SERVICE) --location $(DC_LOCATION) --force @echo "--> [3/3] Regenerating SDK [$(DC_SERVICE)]..." @firebase dataconnect:sdk:generate --project=$(FIREBASE_ALIAS) - @echo "✅ Data Connect SQL, deploy, and SDK generation [$(ENV)]." + @echo "✅ Data Connect full schema sync completed for [$(DC_ENV)]." # Execute seed in Firebase Data Connect dataconnect-seed: dataconnect-file @@ -268,4 +279,4 @@ dataconnect-bootstrap-validation-database: dataconnect-file-validation @echo "⚠️ Generating Data Connect SDK ($(DC_SERVICE))..." @firebase dataconnect:sdk:generate --project=$(FIREBASE_ALIAS) - @echo "🎉 Validation Cloud SQL + Data Connect bootstrap completed successfully!" \ No newline at end of file + @echo "🎉 Validation Cloud SQL + Data Connect bootstrap completed successfully!"