UNPKG

@clickup/ent-framework

Version:

A PostgreSQL graph-database-alike library with microsharding and row-level security

61 lines 2.75 kB
import type { PoolConfig } from "pg"; import { Pool } from "pg"; import type { ClientQueryLoggerProps, SwallowedErrorLoggerProps } from "../abstract/Loggers"; import type { MaybeCallable, PickPartial } from "../internal/misc"; import type { PgClientConn, PgClientOptions } from "./PgClient"; import { PgClient } from "./PgClient"; /** * Options for PgClientPool constructor. */ export interface PgClientPoolOptions extends PgClientOptions { /** Node-Postgres config. We can't make it MaybeCallable unfortunately, * because it's used to initialize Node-Postgres Pool. */ config: PoolConfig & { min?: number | undefined; }; /** Pool class (constructor) compatible with node-postgres Pool. */ Pool?: typeof Pool; /** Close the connection after the query if it was opened long time ago. */ maxConnLifetimeMs?: MaybeCallable<number>; /** Jitter for maxConnLifetimeMs. */ maxConnLifetimeJitter?: MaybeCallable<number>; /** Add not more than this number of connections in each prewarm interval. New * connections are expensive to establish (especially when SSL is enabled). */ prewarmIntervalStep?: MaybeCallable<number>; /** How often to send bursts of prewarm queries to all Clients to keep the * minimal number of open connections. */ prewarmIntervalMs?: MaybeCallable<number>; /** Jitter for prewarmIntervalMs. */ prewarmIntervalJitter?: MaybeCallable<number>; /** What prewarm query to send. */ prewarmQuery?: MaybeCallable<string>; } /** * This class carries connection pooling logic only and delegates the rest to * PgClient base class. * * The idea is that in each particular project, people may have they own classes * derived from PgClient, in case the codebase already has some existing * connection pooling solution. They don't have to use PgClientPool. */ export declare class PgClientPool extends PgClient { /** Default values for the constructor options. */ static readonly DEFAULT_OPTIONS: Required<PickPartial<PgClientPoolOptions>>; /** PG connection pool to use. */ private readonly pool; /** Prewarming periodic timer (if scheduled). */ private readonly prewarmTimeout; /** Whether the pool has been ended and is not usable anymore. */ private readonly ended; /** PgClientPool configuration options. */ readonly options: Required<PgClientPoolOptions>; constructor(options: PgClientPoolOptions); acquireConn(): Promise<PgClientConn>; poolStats(): ClientQueryLoggerProps["poolStats"]; address(): string; logSwallowedError(props: SwallowedErrorLoggerProps): void; end(): Promise<void>; isEnded(): boolean; prewarm(): void; } //# sourceMappingURL=PgClientPool.d.ts.map