UNPKG

@google-cloud/spanner

Version:
138 lines (137 loc) 5.28 kB
/*! * 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 {};