fix(dataconnect): split fast connector sync from full schema sync

This commit is contained in:
zouantchaw
2026-02-27 15:28:09 -05:00
parent e0d633d65d
commit c52bb7e767
4 changed files with 59 additions and 19 deletions

View File

@@ -66,7 +66,8 @@ help:
@echo " make dataconnect-deploy [ENV=dev] Deploy Data Connect schemas (dev/staging)" @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-sql-migrate [ENV=dev] Apply pending SQL migrations"
@echo " make dataconnect-generate-sdk [ENV=dev] Regenerate Data Connect client SDK" @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-seed [ENV=dev] Seed database with test data"
@echo " make dataconnect-clean [ENV=dev] Delete all data from Data Connect" @echo " make dataconnect-clean [ENV=dev] Delete all data from Data Connect"
@echo " make dataconnect-test [ENV=dev] Test Data Connect deployment (dry-run)" @echo " make dataconnect-test [ENV=dev] Test Data Connect deployment (dry-run)"
@@ -101,6 +102,6 @@ help:
@echo "" @echo ""
@echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" @echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
@echo " 💡 Tip: Run 'make mobile-install' first for mobile development" @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 " 💡 Tip: Default ENV=dev, use ENV=staging for staging environment"
@echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" @echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"

View File

@@ -186,7 +186,8 @@ client.createInvoice();
| dataconnect-deploy | Deploy schemas | | dataconnect-deploy | Deploy schemas |
| dataconnect-sql-migrate | Apply DB migrations | | dataconnect-sql-migrate | Apply DB migrations |
| dataconnect-generate-sdk | Generate SDK | | 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-test | Test without breaking |
| dataconnect-seed | Insert seed data | | dataconnect-seed | Insert seed data |
| dataconnect-bootstrap-db | Create Cloud SQL | | dataconnect-bootstrap-db | Create Cloud SQL |
@@ -195,7 +196,7 @@ client.createInvoice();
## 9. Correct Backend Workflow ## 9. Correct Backend Workflow
### Production Flow ### Query/Connector Flow
```bash ```bash
make dataconnect-sync make dataconnect-sync
@@ -203,6 +204,19 @@ make dataconnect-sync
Steps: Steps:
1. Deploy connector
2. Generate SDK
---
### Full Schema Flow
```bash
make dataconnect-sync-full
```
Steps:
1. Deploy schema 1. Deploy schema
2. Run SQL migrations 2. Run SQL migrations
3. Generate SDK 3. Generate SDK

View File

@@ -186,7 +186,8 @@ client.createInvoice();
| dataconnect-deploy | Deploy schemas | | dataconnect-deploy | Deploy schemas |
| dataconnect-sql-migrate | Apply DB migrations | | dataconnect-sql-migrate | Apply DB migrations |
| dataconnect-generate-sdk | Generate SDK | | 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-test | Test without breaking |
| dataconnect-seed | Insert seed data | | dataconnect-seed | Insert seed data |
| dataconnect-bootstrap-db | Create Cloud SQL | | dataconnect-bootstrap-db | Create Cloud SQL |
@@ -195,7 +196,7 @@ client.createInvoice();
## 9. Correct Backend Workflow ## 9. Correct Backend Workflow
### Production Flow ### Query/Connector Flow
```bash ```bash
make dataconnect-sync make dataconnect-sync
@@ -203,6 +204,19 @@ make dataconnect-sync
Steps: Steps:
1. Deploy connector
2. Generate SDK
---
### Full Schema Flow
```bash
make dataconnect-sync-full
```
Steps:
1. Deploy schema 1. Deploy schema
2. Run SQL migrations 2. Run SQL migrations
3. Generate SDK 3. Generate SDK

View File

@@ -2,11 +2,14 @@
# Usage examples: # Usage examples:
# make dataconnect-sync DC_ENV=dev # make dataconnect-sync DC_ENV=dev
# make dataconnect-sync-full DC_ENV=dev
# make dataconnect-seed DC_ENV=validation # make dataconnect-seed DC_ENV=validation
# make dataconnect-clean DC_ENV=validation # make dataconnect-clean DC_ENV=validation
# make dataconnect-generate-sdk DC_ENV=dev # make dataconnect-generate-sdk DC_ENV=dev
# #
DC_ENV ?= dev DC_ENV ?= dev
DC_LOCATION ?= us-central1
DC_CONNECTOR_ID ?= example
DC_SERVICE_DEV := krow-workforce-db DC_SERVICE_DEV := krow-workforce-db
DC_SERVICE_VALIDATION := krow-workforce-db-validation 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) $(error Invalid DC_ENV '$(DC_ENV)'. Use DC_ENV=dev or DC_ENV=validation)
endif 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 #creation dataconnect file
dataconnect-file: dataconnect-file:
@@ -79,15 +82,23 @@ dataconnect-generate-sdk: dataconnect-file
@firebase dataconnect:sdk:generate --project=$(FIREBASE_ALIAS) @firebase dataconnect:sdk:generate --project=$(FIREBASE_ALIAS)
@echo "✅ Data Connect SDK generation completed for [$(DC_ENV)]." @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 dataconnect-sync: dataconnect-file
@echo "--> [1/3] Deploying Data Connect [$(DC_SERVICE)]..." @echo "--> [1/2] Deploying Data Connect connector [$(DC_SERVICE):$(DC_CONNECTOR_ID)]..."
@firebase deploy --only dataconnect:$(DC_SERVICE) --project=$(FIREBASE_ALIAS) @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)]..." @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)]..." @echo "--> [3/3] Regenerating SDK [$(DC_SERVICE)]..."
@firebase dataconnect:sdk:generate --project=$(FIREBASE_ALIAS) @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 # Execute seed in Firebase Data Connect
dataconnect-seed: dataconnect-file dataconnect-seed: dataconnect-file