@google-cloud/spanner
Version:
Cloud Spanner Client Library for Node.js
295 lines (294 loc) • 11.9 kB
TypeScript
/**
* Copyright 2022 Google LLC
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
declare const common: any;
import { google as instanceAdmin } from '../protos/protos';
import { Operation as GaxOperation } from 'google-gax';
import { LongRunningCallback, RequestCallback, ResourceCallback, NormalCallback } from './common';
import { GetInstanceConfigCallback, GetInstanceConfigOptions, GetInstanceConfigResponse, RequestConfig, Spanner } from './index';
import { CallOptions } from 'google-gax';
export type IOperation = instanceAdmin.longrunning.IOperation;
export type CreateInstanceConfigCallback = LongRunningCallback<InstanceConfig>;
export type SetInstanceConfigMetadataCallback = ResourceCallback<GaxOperation, IOperation>;
export type DeleteInstanceConfigCallback = NormalCallback<instanceAdmin.protobuf.IEmpty>;
export type ExistsInstanceConfigCallback = NormalCallback<boolean>;
export type CreateInstanceConfigResponse = [
InstanceConfig,
GaxOperation,
IOperation
];
export type SetInstanceConfigMetadataResponse = [GaxOperation, IOperation];
export type DeleteInstanceConfigResponse = [instanceAdmin.protobuf.IEmpty];
export type ExistsInstanceConfigResponse = boolean;
export type IInstanceConfig = instanceAdmin.spanner.admin.instance.v1.IInstanceConfig;
interface InstanceConfigRequest {
(config: RequestConfig, callback: ResourceCallback<GaxOperation, IOperation>): void;
<T>(config: RequestConfig, callback: RequestCallback<T>): void;
<T, R>(config: RequestConfig, callback: RequestCallback<T, R>): void;
}
export interface SetInstanceConfigMetadataRequest {
instanceConfig: IInstanceConfig;
validateOnly?: boolean;
gaxOpts?: CallOptions;
}
interface DeleteInstanceConfigRequest {
etag?: string;
validateOnly?: boolean;
gaxOpts?: CallOptions;
}
/**
* The {@link InstanceConfig} class represents a possible configuration for a
* Cloud Spanner instance.
*
* Create an `InstanceConfig` object to interact with a Cloud Spanner instance
* config.
*
* @class
*
* @param {Spanner} spanner {@link Spanner} instance.
* @param {string} name Name of the instance config.
*
* @example
* ```
* const {Spanner} = require('@google-cloud/spanner');
* const spanner = new Spanner();
* const instance = spanner.instanceConfig('my-instance-config');
* ```
*/
declare class InstanceConfig extends common.GrpcServiceObject {
formattedName_: string;
request: InstanceConfigRequest;
metadata?: IInstanceConfig;
resourceHeader_: {
[k: string]: string;
};
constructor(spanner: Spanner, name: string);
/**
* Gets the metadata from the backend for this InstanceConfig.
*/
/**
* @typedef {array} GetInstanceConfigResponse
* @property {object[]} 0 The metadata of the instance config.
* @property {string} 0.name The unique identifier for the instance config.
* @property {string} 0.displayName The name of the instance config as it
* appears in UIs.
* @property {google.spanner.admin.instance.v1.IReplicaInfo[]} 0.replicas The replicas used by
* this instance config.
* @property {string[]} 0.leaderOptions The possible leader options for this instance config.
*/
/**
* @callback GetInstanceConfigCallback
* @param {?Error} err Request error, if any.
* @param {object} instanceConfig The metadata of the instance config.
* @param {string} instanceConfig.name The unique identifier for the instance
* config.
* @param {string} instanceConfig.displayName The name of the instance config
* as it appears in UIs.
* @param {google.spanner.admin.instance.v1.IReplicaInfo[]} instanceConfig.replicas The replicas used by
* this instance config.
* @param {string[]} 0.leaderOptions The possible leader options for this instance config.
*/
/**
* Gets the metadata from the backend for this InstanceConfig.
*
* Wrapper around {@link v1.InstanceAdminClient#getInstanceConfig}.
*
* @see {@link v1.InstanceAdminClient#getInstanceConfig}
* @see [GetInstanceConfig API Documentation](https://cloud.google.com/spanner/docs/reference/rpc/google.spanner.admin.instance.v1#google.spanner.admin.instance.v1.InstanceAdmin.GetInstanceConfig)
*
* @param {GetInstanceConfigCallback} [callback] Callback function.
* @returns {Promise<GetInstanceConfigResponse>}
*
* @example
* ```
* const {Spanner} = require('@google-cloud/spanner');
* const spanner = new Spanner();
*
* const instanceConfig = spanner.instanceConfig('custom-my-instance-config');
*
* instanceConfig.get(function(err, instanceConfig) {
* // `instanceConfig` is an instance configuration descriptor.
* });
*
* //-
* // If the callback is omitted, we'll return a Promise.
* //-
* instanceConfig.get().then(function(data) {
* const instanceConfig = data[0];
* });
* ```
*/
get(options?: GetInstanceConfigOptions): Promise<GetInstanceConfigResponse>;
get(callback: GetInstanceConfigCallback): void;
get(options: GetInstanceConfigOptions, callback: GetInstanceConfigCallback): void;
/**
* Update the metadata for this instance config. Note that this method follows
* PATCH semantics, so previously-configured settings will persist.
* This function can only be called for deleting user managed instance
* configs.
*
* Wrapper around {@link v1.InstanceAdminClient#updateInstanceConfig}.
*
* @see {@link v1.InstanceAdminClient#updateInstanceConfig}
* @see [UpdateInstanceConfig API Documentation](https://cloud.google.com/spanner/docs/reference/rpc/google.spanner.admin.instance.v1#google.spanner.admin.instance.v1.InstanceAdmin.UpdateInstanceConfig)
*
* @param {object} metadata The metadata you wish to set.
* @param {object} [gaxOptions] Request configuration options,
* See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions}
* for more details.
* @param {SetInstanceConfigMetadataCallback} [callback] Callback function.
* @returns {Promise<LongRunningOperationResponse>}
*
* @example
* ```
* const {Spanner} = require('@google-cloud/spanner');
* const spanner = new Spanner();
*
* const instanceConfig = spanner.instanceConfig('custom-my-instance-config');
*
* const metadata = {
* instanceConfig: {
* displayName: 'My Instance Config'
* }
* };
*
* instanceConfig.setMetadata(metadata, function(err, operation, apiResponse) {
* if (err) {
* // Error handling omitted.
* }
*
* operation
* .on('error', function(err) {})
* .on('complete', function() {
* // Metadata updated successfully.
* });
* });
*
* //-
* // If the callback is omitted, we'll return a Promise.
* //-
* instanceConfig.setMetadata(metadata).then(function(data) {
* const operation = data[0];
* const apiResponse = data[1];
* });
* ```
*/
setMetadata(config: SetInstanceConfigMetadataRequest): Promise<SetInstanceConfigMetadataResponse>;
setMetadata(config: SetInstanceConfigMetadataRequest, callback: SetInstanceConfigMetadataCallback): void;
/**
* @typedef {array} DeleteInstanceConfigResponse
* @property {object} 0 The full API response.
*/
/**
* @callback DeleteInstanceConfigCallback
* @param {?Error} err Request error, if any.
* @param {object} apiResponse The full API response.
*/
/**
* Delete the instance config. This function can only be called for deleting
* user managed instance configs.
*
* Wrapper around {@link v1.InstanceAdminClient#deleteInstanceConfig}.
*
* @see {@link v1.InstanceAdminClient#deleteInstanceConfig}
* @see [DeleteInstanceConfig API Documentation](https://cloud.google.com/spanner/docs/reference/rpc/google.spanner.admin.instance.v1#google.spanner.admin.instance.v1.InstanceAdmin.DeleteInstanceConfig)
*
* @param {object} [gaxOptions] Request configuration options,
* See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions}
* for more details.
* @param {DeleteInstanceConfigCallback} [callback] Callback function.
* @returns {Promise<DeleteInstanceConfigResponse>}
*
* @example
* ```
* const {Spanner} = require('@google-cloud/spanner');
* const spanner = new Spanner();
*
* const instanceConfig = spanner.instanceConfig('custom-my-instance-config');
*
* instanceConfig.delete(function(err, apiResponse) {
* if (err) {
* // Error handling omitted.
* }
*
* // Instance config was deleted successfully.
* });
*
* //-
* // If the callback is omitted, we'll return a Promise.
* //-
* instanceConfig.delete().then(function(data) {
* const apiResponse = data[0];
* });
* ```
*/
delete(config?: DeleteInstanceConfigRequest): Promise<DeleteInstanceConfigResponse>;
delete(callback: DeleteInstanceConfigCallback): void;
delete(config: DeleteInstanceConfigRequest, callback: DeleteInstanceConfigCallback): void;
/**
* @typedef {array} ExistsInstanceConfigResponse
* @property {boolean} 0 Whether the {@link InstanceConfig} exists.
*/
/**
* @callback ExistsInstanceConfigCallback
* @param {?Error} err Request error, if any.
* @param {boolean} exists Whether the {@link InstanceConfig} exists.
*/
/**
* Check if an instance config exists.
*
* @method InstanceConfig#exists
* @param {object} [gaxOptions] Request configuration options,
* See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions}
* for more details.
* @param {ExistsInstanceConfigCallback} [callback] Callback function.
* @returns {Promise<ExistsInstanceConfigResponse>} When resolved, contains
* true if the instance config exists and false if it does not exist.
*
* @example
* ```
* const {Spanner} = require('@google-cloud/spanner');
* const spanner = new Spanner();
*
* const instanceConfig = spanner.instanceConfig('custom-my-instance-config');
*
* const exists = await instanceConfig.exists();
* console.log(`Does instance config exist? ${exists}`);
* ```
*/
exists(): Promise<ExistsInstanceConfigResponse>;
exists(callback: ExistsInstanceConfigCallback): void;
/**
* Format the instance config name to include the project ID.
*
* @private
*
* @param {string} projectId The project ID.
* @param {string} name The instance config name.
* @returns {string}
*
* @example
* ```
* InstanceConfig.formatName_('grape-spaceship-123', 'my-instance-config');
* // 'projects/grape-spaceship-123/instanceConfigs/my-instance-config'
* ```
*/
static formatName_(projectId: string, name: string): string;
}
/**
* Reference to the {@link InstanceConfig} class.
* @name module:@google-cloud/spanner.InstanceConfig
* @see InstanceConfig
*/
export { InstanceConfig };