diff --git a/src/driver/spanner/SpannerConnectionCredentialsOptions.ts b/src/driver/spanner/SpannerConnectionCredentialsOptions.ts index aa9ba9111..512a9cc6f 100644 --- a/src/driver/spanner/SpannerConnectionCredentialsOptions.ts +++ b/src/driver/spanner/SpannerConnectionCredentialsOptions.ts @@ -16,4 +16,19 @@ export interface SpannerConnectionCredentialsOptions { * Database host port. */ readonly databaseId?: string + + /** + * Object containing client_email and private_key properties, or the external account client options. Cannot be used with apiKey. + */ + readonly credentials?: { + /** + * Client email connection credentials (Optional) + */ + readonly client_email: string + + /** + * Private key connection credentials (Optional) + */ + readonly private_key: string + } } diff --git a/src/driver/spanner/SpannerDriver.ts b/src/driver/spanner/SpannerDriver.ts index f1151387e..5728e2194 100644 --- a/src/driver/spanner/SpannerDriver.ts +++ b/src/driver/spanner/SpannerDriver.ts @@ -732,6 +732,16 @@ export class SpannerDriver implements Driver { protected loadDependencies(): void { try { const lib = this.options.driver || PlatformTools.load("spanner") + + if (this.options.credentials) { + this.spanner = new lib.Spanner({ + projectId: this.options.projectId, + credentials: this.options.credentials, + }) + + return + } + this.spanner = new lib.Spanner({ projectId: this.options.projectId, })