diff --git a/types/pg/index.d.ts b/types/pg/index.d.ts index dde341eba4..3876468087 100644 --- a/types/pg/index.d.ts +++ b/types/pg/index.d.ts @@ -98,8 +98,8 @@ export class Pool extends events.EventEmitter { readonly idleCount: number; readonly waitingCount: number; - connect(): Promise; - connect(callback: (err: Error, client: Client, done: () => void) => void): void; + connect(): Promise; + connect(callback: (err: Error, client: PoolClient, done: () => void) => void): void; end(): Promise; end(callback: () => void): void; @@ -112,21 +112,16 @@ export class Pool extends events.EventEmitter { query(queryTextOrConfig: string | QueryConfig, callback: (err: Error, result: QueryResult) => void): Query; query(queryText: string, values: any[], callback: (err: Error, result: QueryResult) => void): Query; - on(event: "error", listener: (err: Error, client: Client) => void): this; - on(event: "connect" | "acquire", listener: (client: Client) => void): this; + on(event: "error", listener: (err: Error, client: PoolClient) => void): this; + on(event: "connect" | "acquire", listener: (client: PoolClient) => void): this; } -export class Client extends events.EventEmitter { +export class ClientBase extends events.EventEmitter { constructor(config: string | ClientConfig); connect(): Promise; connect(callback: (err: Error) => void): void; - end(): Promise; - end(callback: (err: Error) => void): void; - - release(err?: Error): void; - query(queryStream: QueryConfig & stream.Readable): stream.Readable; query(queryConfig: QueryArrayConfig): Promise; query(queryConfig: QueryConfig): Promise; @@ -151,6 +146,17 @@ export class Client extends events.EventEmitter { on(event: "end", listener: () => void): this; } +export class Client extends ClientBase { + constructor(config: string | ClientConfig); + + end(): Promise; + end(callback: (err: Error) => void): void; +} + +export interface PoolClient extends ClientBase { + release(err?: Error): void; +} + export class Query extends events.EventEmitter { on(event: "row", listener: (row: any, result?: ResultBuilder) => void): this; on(event: "error", listener: (err: Error) => void): this; diff --git a/types/pg/pg-tests.ts b/types/pg/pg-tests.ts index 018145856a..b9b3f80d4e 100644 --- a/types/pg/pg-tests.ts +++ b/types/pg/pg-tests.ts @@ -133,6 +133,12 @@ pool.connect((err, client, done) => { }); }); +pool.connect().then(client => { + client.query({ text: 'SELECT $1::int AS number', values: ['1'], rowMode: 'array' }).then(result => { + console.log(result.rowCount, result.rows[0][0], result.fields[0].name); + }).then(() => client.release(), e => client.release(e)); +}); + pool.on('error', (err, client) => { console.error('idle client error', err.message, err.stack); });