From e7be8a7b1ec767a5554d9b55b9393ec83e7a600c Mon Sep 17 00:00:00 2001 From: Thomas Bouldin Date: Tue, 1 Apr 2025 11:39:38 -0700 Subject: [PATCH] Favor 'service' over 'serviceId' in FDC connectorConfig --- src/data-connect/data-connect-api-client-internal.ts | 4 +++- src/data-connect/data-connect-api.ts | 12 +++++++++--- src/data-connect/data-connect.ts | 5 ++++- src/data-connect/index.ts | 2 +- 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/data-connect/data-connect-api-client-internal.ts b/src/data-connect/data-connect-api-client-internal.ts index b6082b91f5..326eac29af 100644 --- a/src/data-connect/data-connect-api-client-internal.ts +++ b/src/data-connect/data-connect-api-client-internal.ts @@ -112,7 +112,9 @@ export class DataConnectApiClient { ...(options?.operationName && { operationName: options?.operationName }), ...(options?.impersonate && { extensions: { impersonate: options?.impersonate } }), }; - return this.getUrl(API_VERSION, this.connectorConfig.location, this.connectorConfig.serviceId, endpoint) + // N.B. Admin SDK originally used "serviceId" whereas the autogenerated SDKs provide "service". + const service = 'service' in this.connectorConfig ? this.connectorConfig.service : this.connectorConfig.serviceId; + return this.getUrl(API_VERSION, this.connectorConfig.location, service, endpoint) .then(async (url) => { const request: HttpRequestConfig = { method: 'POST', diff --git a/src/data-connect/data-connect-api.ts b/src/data-connect/data-connect-api.ts index 1073437032..5d2330ee1e 100644 --- a/src/data-connect/data-connect-api.ts +++ b/src/data-connect/data-connect-api.ts @@ -20,17 +20,23 @@ import { DecodedIdToken } from '../auth/token-verifier'; /** * Interface representing a Data Connect connector configuration. */ -export interface ConnectorConfig { +export type ConnectorConfig = { /** * Location ID of the Data Connect service. */ location: string; - +} & ({ /** * Service ID of the Data Connect service. + * @deprecated use 'service' instead */ serviceId: string; -} +} | { + /** + * Service ID of the Data Connect service. + */ + service: string; +}); /** * Interface representing GraphQL response. diff --git a/src/data-connect/data-connect.ts b/src/data-connect/data-connect.ts index dbded00042..20e9029a20 100644 --- a/src/data-connect/data-connect.ts +++ b/src/data-connect/data-connect.ts @@ -34,7 +34,10 @@ export class DataConnectService { } getDataConnect(connectorConfig: ConnectorConfig): DataConnect { - const id = `${connectorConfig.location}-${connectorConfig.serviceId}`; + // N.B. For a while, Admin used "serviceId" as its field even though the autogenerated + // SDKs created "service". Let's reconcile. + const service = 'service' in connectorConfig ? connectorConfig.service : connectorConfig.serviceId; + const id = `${connectorConfig.location}-${service}`; const dc = this.dataConnectInstances.get(id); if (typeof dc !== 'undefined') { return dc; diff --git a/src/data-connect/index.ts b/src/data-connect/index.ts index ab262682f2..518db6d64f 100644 --- a/src/data-connect/index.ts +++ b/src/data-connect/index.ts @@ -50,7 +50,7 @@ export { * ```javascript * const connectorConfig: ConnectorConfig = { * location: 'us-west2', - * serviceId: 'my-service', + * service: 'my-service', * }; * * // Get the `DataConnect` service for the default app