@google-cloud/spanner
Version:
Cloud Spanner Client Library for Node.js
138 lines (137 loc) • 5.28 kB
TypeScript
/*!
* Copyright 2024 Google LLC. All Rights Reserved.
*
* 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.
*/
import { Database, Session, Transaction } from '.';
import { MultiplexedSessionInterface } from './multiplexed-session';
import { SessionPoolInterface, SessionPoolOptions } from './session-pool';
import { SessionPoolConstructor } from './database';
declare const common: any;
/**
* @callback GetSessionCallback
* @param {?Error} error Request error, if any.
* @param {Session} session The read-write session.
* @param {Transaction} transaction The transaction object.
*/
export interface GetSessionCallback {
(err: Error | null, session?: Session | null, transaction?: Transaction | null): void;
}
/**
* Interface for implementing session-factory logic.
*
* @interface SessionFactoryInterface
*/
export interface SessionFactoryInterface {
/**
* When called returns a session.
*
* @name SessionFactoryInterface#getSession
* @param {GetSessionCallback} callback The callback function.
*/
getSession(callback: GetSessionCallback): void;
/**
* When called returns a session for paritioned dml.
*
* @name SessionFactoryInterface#getSessionForPartitionedOps
* @param {GetSessionCallback} callback The callback function.
*/
getSessionForPartitionedOps(callback: GetSessionCallback): void;
/**
* When called returns the pool object.
*
* @name SessionFactoryInterface#getPool
*/
getPool(): SessionPoolInterface;
/**
* To be called when releasing a session.
*
* @name SessionFactoryInterface#release
* @param {Session} session The session to be released.
*/
release(session: Session): void;
/**
* When called returns if the multiplexed is enabled or not.
*
* @name SessionFactoryInterface#isMultiplexedEnabled
*/
isMultiplexedEnabled(): boolean;
}
/**
* Creates a SessionFactory object to manage the creation of
* session-pool and multiplexed session.
*
* @class
*
* @param {Database} database Database object.
* @param {String} name Name of the database.
* @param {SessionPoolOptions|SessionPoolInterface} options Session pool
* configuration options or custom pool inteface.
*/
export declare class SessionFactory extends common.GrpcServiceObject implements SessionFactoryInterface {
multiplexedSession_: MultiplexedSessionInterface;
pool_: SessionPoolInterface;
isMultiplexed: boolean;
isMultiplexedPartitionOps: boolean;
constructor(database: Database, name: String, poolOptions?: SessionPoolConstructor | SessionPoolOptions);
/**
* Retrieves a session, either a regular session or a multiplexed session, based on the environment variable configuration.
*
* If the environment variable `GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS` is set to `true`, the method will attempt to
* retrieve a multiplexed session. Otherwise, it will retrieve a session from the regular pool.
*
* @param {GetSessionCallback} callback The callback function.
*/
getSession(callback: GetSessionCallback): void;
/**
* Retrieves a session for partitioned operations, selecting the appropriate session type
* based on whether multiplexed sessions are enabled.
*
* If multiplexed sessions are enabled for partitioned ops this methods delegates the request to `getSession()`, which returns
* either a multiplexed session or a regular session based on the configuration.
*
* If the multiplexed sessions are disabled, a session is retrieved from the regular session pool.
*
* @param {GetSessionCallback} callback The callback function.
*/
getSessionForPartitionedOps(callback: GetSessionCallback): void;
/**
* Returns the regular session pool object.
*
* @returns {SessionPoolInterface} The session pool used by current instance.
*/
getPool(): SessionPoolInterface;
/**
* Releases a regular session back to the session pool.
*
* This methods does not release a multiplexed session.
*
* It returns a session to the pool after it is no longer needed.
* It is a no-op for multiplexed sessions.
*
* @param {Session} session - The session to be released. This should be an instance of `Session` that was
* previously acquired from the session pool.
*
* @throws {Error} If the session is invalid or cannot be released.
*/
release(session: Session): void;
/**
* Returns if a multiplexed is enabled or not.
*
* This method returns true if multiplexed session is enabled, otherwise returns false
*
* @returns {boolean}
*/
isMultiplexedEnabled(): boolean;
}
export {};