Skip to content

Commit 468f769

Browse files
committed
Add createSimplePgClientFromClient. Version bump.
1 parent 545e705 commit 468f769

3 files changed

Lines changed: 56 additions & 5 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "simple-pg-client",
3-
"version": "1.0.4",
3+
"version": "1.0.5",
44
"description": "Simplified Javascript PostgreSQL client.",
55
"main": "dist/index.js",
66
"types": "dist/index.d.ts",

src/index.ts

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
11
import { Client } from 'pg'
22
import { loop } from './common/function'
33
import { createDbService } from './dbService'
4-
import { SimplePgClientOptions, SimplePgClient, ResolvedMaintenanceDbOptions, SimplePgClientEventHandlers } from './types'
4+
import {
5+
SimplePgClientOptions,
6+
SimplePgClient,
7+
ResolvedMaintenanceDbOptions,
8+
SimplePgClientEventHandlers,
9+
SimplePgClientFromClientOptions,
10+
} from './types'
511

612
const createDbUrl = (
713
host: string,
@@ -199,7 +205,7 @@ export const createConsoleLogEventHandlers = (): SimplePgClientEventHandlers =>
199205
})
200206

201207
/**
202-
* Creates an instance of `SimplePgClient`, connecting to a PostgreSQL database.
208+
* Creates an instance of `SimplePgClient`, connecting to a PostgreSQL server.
203209
*/
204210
export const createSimplePgClient = async (options: SimplePgClientOptions): Promise<SimplePgClient> => {
205211
// Optionally create db if it does not exist, via a defined maintenance db on the server
@@ -247,3 +253,26 @@ export const createSimplePgClient = async (options: SimplePgClientOptions): Prom
247253
queryGetRows: dbService.queryGetRows,
248254
}
249255
}
256+
257+
/**
258+
* Creates an instance of `SimplePgClient` from an already-connected `Client` instance (from `pg`).
259+
*/
260+
export const createSimplePgClientFromClient = (options: SimplePgClientFromClientOptions): SimplePgClient => {
261+
// Create db service, providing query functions on pg client
262+
const dbService = createDbService({
263+
client: options.client,
264+
sqlLoggingTruncation: options.sqlLoggingTruncation,
265+
events: {
266+
onError: options.events?.onQueryError,
267+
onQuery: options.events?.onQuery,
268+
},
269+
})
270+
271+
return {
272+
client: options.client,
273+
query: dbService.query,
274+
queryExists: dbService.queryExists,
275+
queryGetFirstRow: dbService.queryGetFirstRow,
276+
queryGetRows: dbService.queryGetRows,
277+
}
278+
}

src/types.ts

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,11 @@ export type ResolvedMaintenanceDbOptions = OmitTyped<Required<MaintenanceDbOptio
4343

4444
type VoidOrPromiseVoid = void | Promise<void>
4545

46+
export type SimplePgClientQueryEventHandlers = {
47+
onQuery?: DbServiceOptions['events']['onQuery']
48+
onQueryError?: DbServiceOptions['events']['onError']
49+
}
50+
4651
export type SimplePgClientEventHandlers = {
4752
onTryMaintenanceDbConnect?: (c: Client, retryIndex: number, message: string) => VoidOrPromiseVoid
4853
onMaintenanceDbConnect?: (c: Client, retryIndex: number, message: string) => VoidOrPromiseVoid
@@ -61,9 +66,26 @@ export type SimplePgClientEventHandlers = {
6166
onDbConnect?: (c: Client, message: string) => void | VoidOrPromiseVoid
6267
onDbConnectFail?: (c: Client, retryIndex: number, e: any, message: string) => VoidOrPromiseVoid
6368
onDbConnectNumRetryExceeded?: (c: Client, retryIndex: number, e: any, message: string) => VoidOrPromiseVoid
69+
} & SimplePgClientQueryEventHandlers
6470

65-
onQuery?: DbServiceOptions['events']['onQuery']
66-
onQueryError?: DbServiceOptions['events']['onError']
71+
export type SimplePgClientFromClientOptions = {
72+
/**
73+
* The `Client` (from `pg`) to use to create the `SimplePgClient` instance from.
74+
*/
75+
client: Client
76+
/**
77+
* Maximum number of characters in the `sql` parameter of `events.onQuery` and `events.onQueryError`.
78+
*
79+
* Leave as `undefined` or `-1` to disable truncation.
80+
*
81+
* @default undefined
82+
*/
83+
sqlLoggingTruncation?: number
84+
/**
85+
* Events of the client that can be handled. Each one can return a promise, pausing
86+
* execution until it resolves.
87+
*/
88+
events?: SimplePgClientQueryEventHandlers
6789
}
6890

6991
/**

0 commit comments

Comments
 (0)