pqb 0.55.1 → 0.56.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,65 @@
1
+ import * as orchid_core from 'orchid-core';
2
+ import { ColumnSchemaConfig, AdapterConfigBase, AdapterBase, QueryResultRow, QueryResult, QueryArraysResult, QueryError } from 'orchid-core';
3
+ import { PoolConfig, Pool, PoolClient } from 'pg';
4
+ import { DefaultSchemaConfig, DefaultColumnTypes, DbOptions, DbResult } from 'pqb';
5
+
6
+ declare const createDb: <SchemaConfig extends ColumnSchemaConfig<orchid_core.ColumnTypeBase<orchid_core.ColumnTypeSchemaArg, unknown, any, any, unknown, unknown, any, unknown, any, orchid_core.ColumnDataBase>> = DefaultSchemaConfig, ColumnTypes = DefaultColumnTypes<SchemaConfig>>({ log, ...options }: DbOptions<SchemaConfig, ColumnTypes> & Omit<NodePostgresAdapterOptions, 'log'>) => DbResult<ColumnTypes>;
7
+ interface TypeParsers {
8
+ [K: number]: (input: string) => unknown;
9
+ }
10
+ interface AdapterConfig extends AdapterConfigBase, Omit<PoolConfig, 'types' | 'connectionString'> {
11
+ schema?: string;
12
+ databaseURL?: string;
13
+ }
14
+ type NodePostgresAdapterOptions = Omit<AdapterConfig, 'log'>;
15
+ declare class NodePostgresAdapter implements AdapterBase {
16
+ config: NodePostgresAdapterOptions;
17
+ pool: Pool;
18
+ schema?: string;
19
+ errorClass: any;
20
+ constructor(config: NodePostgresAdapterOptions);
21
+ private getURL;
22
+ reconfigure(params: {
23
+ database?: string;
24
+ user?: string;
25
+ password?: string;
26
+ schema?: string;
27
+ }): NodePostgresAdapter;
28
+ getDatabase(): string;
29
+ getUser(): string;
30
+ getSchema(): string | undefined;
31
+ getHost(): string;
32
+ connect(): Promise<PoolClient>;
33
+ query<T extends QueryResultRow = QueryResultRow>(text: string, values?: unknown[]): Promise<QueryResult<T>>;
34
+ arrays<R extends any[] = any[]>(text: string, values?: unknown[]): Promise<QueryArraysResult<R>>;
35
+ transaction<Result>(options: string | undefined, cb: (adapter: NodePostgresTransactionAdapter) => Promise<Result>): Promise<Result>;
36
+ close(): Promise<void>;
37
+ assignError(to: QueryError, dbError: Error): void;
38
+ }
39
+ declare class NodePostgresTransactionAdapter implements AdapterBase {
40
+ adapter: NodePostgresAdapter;
41
+ client: PoolClient;
42
+ pool: Pool;
43
+ config: PoolConfig;
44
+ schema?: string;
45
+ errorClass: any;
46
+ constructor(adapter: NodePostgresAdapter, client: PoolClient);
47
+ reconfigure(params: {
48
+ database?: string;
49
+ user?: string;
50
+ password?: string;
51
+ schema?: string;
52
+ }): AdapterBase;
53
+ getDatabase(): string;
54
+ getUser(): string;
55
+ getSchema(): string | undefined;
56
+ getHost(): string;
57
+ connect(): Promise<PoolClient>;
58
+ query<T extends QueryResultRow = QueryResultRow>(text: string, values?: unknown[]): Promise<QueryResult<T>>;
59
+ arrays<R extends any[] = any[]>(text: string, values?: unknown[]): Promise<QueryArraysResult<R>>;
60
+ transaction<Result>(_options: string | undefined, cb: (adapter: NodePostgresTransactionAdapter) => Promise<Result>): Promise<Result>;
61
+ close(): Promise<void>;
62
+ assignError(to: QueryError, from: Error): void;
63
+ }
64
+
65
+ export { type AdapterConfig, NodePostgresAdapter, type NodePostgresAdapterOptions, NodePostgresTransactionAdapter, type TypeParsers, createDb };
@@ -0,0 +1,242 @@
1
+ 'use strict';
2
+
3
+ var pg = require('pg');
4
+ var orchidCore = require('orchid-core');
5
+ var pqb = require('pqb');
6
+
7
+ const createDb = ({
8
+ log,
9
+ ...options
10
+ }) => {
11
+ return pqb.createDbWithAdapter({
12
+ ...options,
13
+ log,
14
+ adapter: new NodePostgresAdapter(options)
15
+ });
16
+ };
17
+ const { types } = pg;
18
+ const defaultTypeParsers = {};
19
+ for (const key in types.builtins) {
20
+ const id = types.builtins[key];
21
+ defaultTypeParsers[id] = types.getTypeParser(id);
22
+ }
23
+ [
24
+ types.builtins.DATE,
25
+ types.builtins.TIMESTAMP,
26
+ types.builtins.TIMESTAMPTZ,
27
+ types.builtins.CIRCLE
28
+ ].forEach((id) => {
29
+ delete defaultTypeParsers[id];
30
+ });
31
+ class NodePostgresAdapter {
32
+ constructor(config) {
33
+ this.config = config;
34
+ this.errorClass = pg.DatabaseError;
35
+ let schema = config.schema;
36
+ if (config.databaseURL) {
37
+ const url = new URL(config.databaseURL);
38
+ const ssl = url.searchParams.get("ssl");
39
+ if (ssl === "false") {
40
+ url.searchParams.delete("ssl");
41
+ } else if (!config.ssl && ssl === "true") {
42
+ config.ssl = true;
43
+ }
44
+ if (!schema) {
45
+ schema = url.searchParams.get("schema") || void 0;
46
+ }
47
+ config.databaseURL = url.toString();
48
+ config.connectionString = config.databaseURL;
49
+ }
50
+ if (schema) this.schema = schema === "public" ? void 0 : schema;
51
+ this.config = config;
52
+ this.pool = new pg.Pool(config);
53
+ if (config.connectRetry) {
54
+ orchidCore.setConnectRetryConfig(
55
+ this,
56
+ config.connectRetry === true ? orchidCore.emptyObject : config.connectRetry
57
+ );
58
+ this.connect = orchidCore.wrapAdapterFnWithConnectRetry(
59
+ this,
60
+ () => this.pool.connect()
61
+ );
62
+ }
63
+ }
64
+ getURL() {
65
+ return this.config.databaseURL ? new URL(this.config.databaseURL) : void 0;
66
+ }
67
+ reconfigure(params) {
68
+ const url = this.getURL();
69
+ if (url) {
70
+ if ("database" in params) {
71
+ url.pathname = `/${params.database}`;
72
+ }
73
+ if (params.user !== void 0) {
74
+ url.username = params.user;
75
+ }
76
+ if (params.password !== void 0) {
77
+ url.password = params.password;
78
+ }
79
+ if (params.schema !== void 0) {
80
+ url.searchParams.set("schema", params.schema);
81
+ }
82
+ return new NodePostgresAdapter({
83
+ ...this.config,
84
+ databaseURL: url.toString()
85
+ });
86
+ } else {
87
+ return new NodePostgresAdapter({ ...this.config, ...params });
88
+ }
89
+ }
90
+ getDatabase() {
91
+ const url = this.getURL();
92
+ return url ? url.pathname.slice(1) : this.config.database;
93
+ }
94
+ getUser() {
95
+ const url = this.getURL();
96
+ return url ? url.username : this.config.user;
97
+ }
98
+ getSchema() {
99
+ return this.schema;
100
+ }
101
+ getHost() {
102
+ const url = this.getURL();
103
+ return url ? url.hostname : this.config.host;
104
+ }
105
+ connect() {
106
+ return this.pool.connect();
107
+ }
108
+ query(text, values) {
109
+ return performQuery(this, text, values);
110
+ }
111
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
112
+ arrays(text, values) {
113
+ return performQuery(this, text, values, "array");
114
+ }
115
+ async transaction(options, cb) {
116
+ const client = await this.connect();
117
+ try {
118
+ await setSearchPath(client, this.schema);
119
+ await performQueryOnClient(
120
+ client,
121
+ options ? "BEGIN " + options : "BEGIN"
122
+ );
123
+ let result;
124
+ try {
125
+ result = await cb(new NodePostgresTransactionAdapter(this, client));
126
+ } catch (err) {
127
+ await performQueryOnClient(client, "ROLLBACK");
128
+ throw err;
129
+ }
130
+ await performQueryOnClient(client, "COMMIT");
131
+ return result;
132
+ } finally {
133
+ client.release();
134
+ }
135
+ }
136
+ close() {
137
+ const { pool } = this;
138
+ this.pool = new pg.Pool(this.config);
139
+ return pool.end();
140
+ }
141
+ assignError(to, dbError) {
142
+ const from = dbError;
143
+ to.message = from.message;
144
+ to.length = from.length;
145
+ to.name = from.name;
146
+ to.severity = from.severity;
147
+ to.code = from.code;
148
+ to.detail = from.detail;
149
+ to.hint = from.hint;
150
+ to.position = from.position;
151
+ to.internalPosition = from.internalPosition;
152
+ to.internalQuery = from.internalQuery;
153
+ to.where = from.where;
154
+ to.schema = from.schema;
155
+ to.table = from.table;
156
+ to.column = from.column;
157
+ to.dataType = from.dataType;
158
+ to.constraint = from.constraint;
159
+ to.file = from.file;
160
+ to.line = from.line;
161
+ to.routine = from.routine;
162
+ }
163
+ }
164
+ const defaultTypesConfig = {
165
+ getTypeParser(id) {
166
+ return defaultTypeParsers[id] || orchidCore.returnArg;
167
+ }
168
+ };
169
+ const setSearchPath = (client, schema) => {
170
+ if (client.connection.schema !== schema) {
171
+ client.connection.schema = schema;
172
+ return client.query(`SET search_path = ${schema || "public"}`);
173
+ }
174
+ return;
175
+ };
176
+ const performQuery = async (adapter, text, values, rowMode) => {
177
+ const client = await adapter.connect();
178
+ try {
179
+ await setSearchPath(client, adapter.schema);
180
+ return await performQueryOnClient(client, text, values, rowMode);
181
+ } finally {
182
+ client.release();
183
+ }
184
+ };
185
+ const performQueryOnClient = (client, text, values, rowMode) => {
186
+ const params = {
187
+ text,
188
+ values,
189
+ rowMode,
190
+ types: defaultTypesConfig
191
+ };
192
+ return client.query(params);
193
+ };
194
+ class NodePostgresTransactionAdapter {
195
+ constructor(adapter, client) {
196
+ this.adapter = adapter;
197
+ this.client = client;
198
+ this.errorClass = pg.DatabaseError;
199
+ this.pool = adapter.pool;
200
+ this.config = adapter.config;
201
+ this.schema = adapter.schema;
202
+ }
203
+ reconfigure(params) {
204
+ return this.adapter.reconfigure(params);
205
+ }
206
+ getDatabase() {
207
+ return this.adapter.getDatabase();
208
+ }
209
+ getUser() {
210
+ return this.adapter.getUser();
211
+ }
212
+ getSchema() {
213
+ return this.adapter.getSchema();
214
+ }
215
+ getHost() {
216
+ return this.adapter.getHost();
217
+ }
218
+ connect() {
219
+ return Promise.resolve(this.client);
220
+ }
221
+ async query(text, values) {
222
+ return await performQueryOnClient(this.client, text, values);
223
+ }
224
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
225
+ async arrays(text, values) {
226
+ return await performQueryOnClient(this.client, text, values, "array");
227
+ }
228
+ async transaction(_options, cb) {
229
+ return await cb(this);
230
+ }
231
+ close() {
232
+ return this.adapter.close();
233
+ }
234
+ assignError(to, from) {
235
+ return this.adapter.assignError(to, from);
236
+ }
237
+ }
238
+
239
+ exports.NodePostgresAdapter = NodePostgresAdapter;
240
+ exports.NodePostgresTransactionAdapter = NodePostgresTransactionAdapter;
241
+ exports.createDb = createDb;
242
+ //# sourceMappingURL=node-postgres.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-postgres.js","sources":["../src/adapters/node-postgres.ts"],"sourcesContent":["import pg, { DatabaseError, Pool, PoolClient, PoolConfig } from 'pg';\nimport {\n AdapterBase,\n AdapterConfigBase,\n ColumnSchemaConfig,\n emptyObject,\n QueryArraysResult,\n QueryError,\n QueryResult,\n QueryResultRow,\n returnArg,\n setConnectRetryConfig,\n wrapAdapterFnWithConnectRetry,\n} from 'orchid-core';\nimport {\n DefaultColumnTypes,\n DefaultSchemaConfig,\n DbOptions,\n DbResult,\n createDbWithAdapter,\n} from 'pqb';\n\nexport const createDb = <\n SchemaConfig extends ColumnSchemaConfig = DefaultSchemaConfig,\n ColumnTypes = DefaultColumnTypes<SchemaConfig>,\n>({\n log,\n ...options\n}: DbOptions<SchemaConfig, ColumnTypes> &\n Omit<NodePostgresAdapterOptions, 'log'>): DbResult<ColumnTypes> => {\n return createDbWithAdapter({\n ...options,\n log,\n adapter: new NodePostgresAdapter(options),\n });\n};\n\nconst { types } = pg;\n\nexport interface TypeParsers {\n [K: number]: (input: string) => unknown;\n}\n\nconst defaultTypeParsers: TypeParsers = {};\n\nfor (const key in types.builtins) {\n const id = types.builtins[key as keyof typeof types.builtins];\n defaultTypeParsers[id] = types.getTypeParser(id);\n}\n\n[\n types.builtins.DATE,\n types.builtins.TIMESTAMP,\n types.builtins.TIMESTAMPTZ,\n types.builtins.CIRCLE,\n].forEach((id) => {\n delete defaultTypeParsers[id];\n});\n\nexport interface AdapterConfig\n extends AdapterConfigBase,\n Omit<PoolConfig, 'types' | 'connectionString'> {\n schema?: string;\n databaseURL?: string;\n}\n\nexport type NodePostgresAdapterOptions = Omit<AdapterConfig, 'log'>;\n\nexport class NodePostgresAdapter implements AdapterBase {\n pool: Pool;\n schema?: string;\n errorClass = DatabaseError;\n\n constructor(public config: NodePostgresAdapterOptions) {\n let schema = config.schema;\n if (config.databaseURL) {\n const url = new URL(config.databaseURL);\n\n const ssl = url.searchParams.get('ssl');\n\n if (ssl === 'false') {\n url.searchParams.delete('ssl');\n } else if (!config.ssl && ssl === 'true') {\n config.ssl = true;\n }\n\n if (!schema) {\n schema = url.searchParams.get('schema') || undefined;\n }\n\n config.databaseURL = url.toString();\n (config as PoolConfig).connectionString = config.databaseURL;\n }\n\n if (schema) this.schema = schema === 'public' ? undefined : schema;\n\n this.config = config;\n this.pool = new pg.Pool(config);\n\n if (config.connectRetry) {\n setConnectRetryConfig(\n this,\n config.connectRetry === true ? emptyObject : config.connectRetry,\n );\n\n this.connect = wrapAdapterFnWithConnectRetry(this, () =>\n this.pool.connect(),\n );\n }\n }\n\n private getURL(): URL | undefined {\n return this.config.databaseURL\n ? new URL(this.config.databaseURL)\n : undefined;\n }\n\n reconfigure(params: {\n database?: string;\n user?: string;\n password?: string;\n schema?: string;\n }): NodePostgresAdapter {\n const url = this.getURL();\n if (url) {\n if ('database' in params) {\n url.pathname = `/${params.database}`;\n }\n\n if (params.user !== undefined) {\n url.username = params.user;\n }\n\n if (params.password !== undefined) {\n url.password = params.password;\n }\n\n if (params.schema !== undefined) {\n url.searchParams.set('schema', params.schema);\n }\n\n return new NodePostgresAdapter({\n ...this.config,\n databaseURL: url.toString(),\n });\n } else {\n return new NodePostgresAdapter({ ...this.config, ...params });\n }\n }\n\n getDatabase(): string {\n const url = this.getURL();\n return url ? url.pathname.slice(1) : (this.config.database as string);\n }\n\n getUser(): string {\n const url = this.getURL();\n return url ? url.username : (this.config.user as string);\n }\n\n getSchema(): string | undefined {\n return this.schema;\n }\n\n getHost(): string {\n const url = this.getURL();\n return url ? url.hostname : (this.config.host as string);\n }\n\n connect(): Promise<PoolClient> {\n return this.pool.connect();\n }\n\n query<T extends QueryResultRow = QueryResultRow>(\n text: string,\n values?: unknown[],\n ): Promise<QueryResult<T>> {\n return performQuery(this, text, values) as never;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n arrays<R extends any[] = any[]>(\n text: string,\n values?: unknown[],\n ): Promise<QueryArraysResult<R>> {\n return performQuery(this, text, values, 'array') as never;\n }\n\n async transaction<Result>(\n options: string | undefined,\n cb: (adapter: NodePostgresTransactionAdapter) => Promise<Result>,\n ): Promise<Result> {\n const client = await this.connect();\n try {\n await setSearchPath(client, this.schema);\n await performQueryOnClient(\n client,\n options ? 'BEGIN ' + options : 'BEGIN',\n );\n let result;\n try {\n result = await cb(new NodePostgresTransactionAdapter(this, client));\n } catch (err) {\n await performQueryOnClient(client, 'ROLLBACK');\n throw err;\n }\n await performQueryOnClient(client, 'COMMIT');\n return result;\n } finally {\n client.release();\n }\n }\n\n close(): Promise<void> {\n const { pool } = this;\n this.pool = new pg.Pool(this.config);\n return pool.end();\n }\n\n assignError(to: QueryError, dbError: Error) {\n const from = dbError as DatabaseError;\n to.message = from.message;\n (to as { length?: number }).length = from.length;\n (to as { name?: string }).name = from.name;\n to.severity = from.severity;\n to.code = from.code;\n to.detail = from.detail;\n to.hint = from.hint;\n to.position = from.position;\n to.internalPosition = from.internalPosition;\n to.internalQuery = from.internalQuery;\n to.where = from.where;\n to.schema = from.schema;\n to.table = from.table;\n to.column = from.column;\n to.dataType = from.dataType;\n to.constraint = from.constraint;\n to.file = from.file;\n to.line = from.line;\n to.routine = from.routine;\n }\n}\n\nconst defaultTypesConfig = {\n getTypeParser(id: number) {\n return defaultTypeParsers[id] || returnArg;\n },\n};\n\ninterface ConnectionSchema {\n connection: { schema?: string };\n}\n\nconst setSearchPath = (client: PoolClient, schema?: string) => {\n if ((client as unknown as ConnectionSchema).connection.schema !== schema) {\n (client as unknown as ConnectionSchema).connection.schema = schema;\n return client.query(`SET search_path = ${schema || 'public'}`);\n }\n return;\n};\n\nconst performQuery = async (\n adapter: NodePostgresAdapter,\n text: string,\n values?: unknown[],\n rowMode?: 'array',\n) => {\n const client = await adapter.connect();\n try {\n await setSearchPath(client, adapter.schema);\n return await performQueryOnClient(client, text, values, rowMode);\n } finally {\n client.release();\n }\n};\n\nconst performQueryOnClient = (\n client: PoolClient,\n text: string,\n values?: unknown[],\n rowMode?: 'array',\n) => {\n const params = {\n text,\n values,\n rowMode,\n types: defaultTypesConfig,\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return client.query(params as any);\n};\n\nexport class NodePostgresTransactionAdapter implements AdapterBase {\n pool: Pool;\n config: PoolConfig;\n schema?: string;\n errorClass = DatabaseError;\n\n constructor(public adapter: NodePostgresAdapter, public client: PoolClient) {\n this.pool = adapter.pool;\n this.config = adapter.config;\n this.schema = adapter.schema;\n }\n\n reconfigure(params: {\n database?: string;\n user?: string;\n password?: string;\n schema?: string;\n }): AdapterBase {\n return this.adapter.reconfigure(params);\n }\n\n getDatabase(): string {\n return this.adapter.getDatabase();\n }\n\n getUser(): string {\n return this.adapter.getUser();\n }\n\n getSchema(): string | undefined {\n return this.adapter.getSchema();\n }\n\n getHost(): string {\n return this.adapter.getHost();\n }\n\n connect(): Promise<PoolClient> {\n return Promise.resolve(this.client);\n }\n\n async query<T extends QueryResultRow = QueryResultRow>(\n text: string,\n values?: unknown[],\n ): Promise<QueryResult<T>> {\n return await performQueryOnClient(this.client, text, values);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async arrays<R extends any[] = any[]>(\n text: string,\n values?: unknown[],\n ): Promise<QueryArraysResult<R>> {\n return await performQueryOnClient(this.client, text, values, 'array');\n }\n\n async transaction<Result>(\n _options: string | undefined,\n cb: (adapter: NodePostgresTransactionAdapter) => Promise<Result>,\n ): Promise<Result> {\n return await cb(this);\n }\n\n close() {\n return this.adapter.close();\n }\n\n assignError(to: QueryError, from: Error) {\n return this.adapter.assignError(to, from);\n }\n}\n"],"names":["createDbWithAdapter","DatabaseError","setConnectRetryConfig","emptyObject","wrapAdapterFnWithConnectRetry","returnArg"],"mappings":"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"}
@@ -0,0 +1,238 @@
1
+ import pg, { DatabaseError } from 'pg';
2
+ import { setConnectRetryConfig, emptyObject, wrapAdapterFnWithConnectRetry, returnArg } from 'orchid-core';
3
+ import { createDbWithAdapter } from 'pqb';
4
+
5
+ const createDb = ({
6
+ log,
7
+ ...options
8
+ }) => {
9
+ return createDbWithAdapter({
10
+ ...options,
11
+ log,
12
+ adapter: new NodePostgresAdapter(options)
13
+ });
14
+ };
15
+ const { types } = pg;
16
+ const defaultTypeParsers = {};
17
+ for (const key in types.builtins) {
18
+ const id = types.builtins[key];
19
+ defaultTypeParsers[id] = types.getTypeParser(id);
20
+ }
21
+ [
22
+ types.builtins.DATE,
23
+ types.builtins.TIMESTAMP,
24
+ types.builtins.TIMESTAMPTZ,
25
+ types.builtins.CIRCLE
26
+ ].forEach((id) => {
27
+ delete defaultTypeParsers[id];
28
+ });
29
+ class NodePostgresAdapter {
30
+ constructor(config) {
31
+ this.config = config;
32
+ this.errorClass = DatabaseError;
33
+ let schema = config.schema;
34
+ if (config.databaseURL) {
35
+ const url = new URL(config.databaseURL);
36
+ const ssl = url.searchParams.get("ssl");
37
+ if (ssl === "false") {
38
+ url.searchParams.delete("ssl");
39
+ } else if (!config.ssl && ssl === "true") {
40
+ config.ssl = true;
41
+ }
42
+ if (!schema) {
43
+ schema = url.searchParams.get("schema") || void 0;
44
+ }
45
+ config.databaseURL = url.toString();
46
+ config.connectionString = config.databaseURL;
47
+ }
48
+ if (schema) this.schema = schema === "public" ? void 0 : schema;
49
+ this.config = config;
50
+ this.pool = new pg.Pool(config);
51
+ if (config.connectRetry) {
52
+ setConnectRetryConfig(
53
+ this,
54
+ config.connectRetry === true ? emptyObject : config.connectRetry
55
+ );
56
+ this.connect = wrapAdapterFnWithConnectRetry(
57
+ this,
58
+ () => this.pool.connect()
59
+ );
60
+ }
61
+ }
62
+ getURL() {
63
+ return this.config.databaseURL ? new URL(this.config.databaseURL) : void 0;
64
+ }
65
+ reconfigure(params) {
66
+ const url = this.getURL();
67
+ if (url) {
68
+ if ("database" in params) {
69
+ url.pathname = `/${params.database}`;
70
+ }
71
+ if (params.user !== void 0) {
72
+ url.username = params.user;
73
+ }
74
+ if (params.password !== void 0) {
75
+ url.password = params.password;
76
+ }
77
+ if (params.schema !== void 0) {
78
+ url.searchParams.set("schema", params.schema);
79
+ }
80
+ return new NodePostgresAdapter({
81
+ ...this.config,
82
+ databaseURL: url.toString()
83
+ });
84
+ } else {
85
+ return new NodePostgresAdapter({ ...this.config, ...params });
86
+ }
87
+ }
88
+ getDatabase() {
89
+ const url = this.getURL();
90
+ return url ? url.pathname.slice(1) : this.config.database;
91
+ }
92
+ getUser() {
93
+ const url = this.getURL();
94
+ return url ? url.username : this.config.user;
95
+ }
96
+ getSchema() {
97
+ return this.schema;
98
+ }
99
+ getHost() {
100
+ const url = this.getURL();
101
+ return url ? url.hostname : this.config.host;
102
+ }
103
+ connect() {
104
+ return this.pool.connect();
105
+ }
106
+ query(text, values) {
107
+ return performQuery(this, text, values);
108
+ }
109
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
110
+ arrays(text, values) {
111
+ return performQuery(this, text, values, "array");
112
+ }
113
+ async transaction(options, cb) {
114
+ const client = await this.connect();
115
+ try {
116
+ await setSearchPath(client, this.schema);
117
+ await performQueryOnClient(
118
+ client,
119
+ options ? "BEGIN " + options : "BEGIN"
120
+ );
121
+ let result;
122
+ try {
123
+ result = await cb(new NodePostgresTransactionAdapter(this, client));
124
+ } catch (err) {
125
+ await performQueryOnClient(client, "ROLLBACK");
126
+ throw err;
127
+ }
128
+ await performQueryOnClient(client, "COMMIT");
129
+ return result;
130
+ } finally {
131
+ client.release();
132
+ }
133
+ }
134
+ close() {
135
+ const { pool } = this;
136
+ this.pool = new pg.Pool(this.config);
137
+ return pool.end();
138
+ }
139
+ assignError(to, dbError) {
140
+ const from = dbError;
141
+ to.message = from.message;
142
+ to.length = from.length;
143
+ to.name = from.name;
144
+ to.severity = from.severity;
145
+ to.code = from.code;
146
+ to.detail = from.detail;
147
+ to.hint = from.hint;
148
+ to.position = from.position;
149
+ to.internalPosition = from.internalPosition;
150
+ to.internalQuery = from.internalQuery;
151
+ to.where = from.where;
152
+ to.schema = from.schema;
153
+ to.table = from.table;
154
+ to.column = from.column;
155
+ to.dataType = from.dataType;
156
+ to.constraint = from.constraint;
157
+ to.file = from.file;
158
+ to.line = from.line;
159
+ to.routine = from.routine;
160
+ }
161
+ }
162
+ const defaultTypesConfig = {
163
+ getTypeParser(id) {
164
+ return defaultTypeParsers[id] || returnArg;
165
+ }
166
+ };
167
+ const setSearchPath = (client, schema) => {
168
+ if (client.connection.schema !== schema) {
169
+ client.connection.schema = schema;
170
+ return client.query(`SET search_path = ${schema || "public"}`);
171
+ }
172
+ return;
173
+ };
174
+ const performQuery = async (adapter, text, values, rowMode) => {
175
+ const client = await adapter.connect();
176
+ try {
177
+ await setSearchPath(client, adapter.schema);
178
+ return await performQueryOnClient(client, text, values, rowMode);
179
+ } finally {
180
+ client.release();
181
+ }
182
+ };
183
+ const performQueryOnClient = (client, text, values, rowMode) => {
184
+ const params = {
185
+ text,
186
+ values,
187
+ rowMode,
188
+ types: defaultTypesConfig
189
+ };
190
+ return client.query(params);
191
+ };
192
+ class NodePostgresTransactionAdapter {
193
+ constructor(adapter, client) {
194
+ this.adapter = adapter;
195
+ this.client = client;
196
+ this.errorClass = DatabaseError;
197
+ this.pool = adapter.pool;
198
+ this.config = adapter.config;
199
+ this.schema = adapter.schema;
200
+ }
201
+ reconfigure(params) {
202
+ return this.adapter.reconfigure(params);
203
+ }
204
+ getDatabase() {
205
+ return this.adapter.getDatabase();
206
+ }
207
+ getUser() {
208
+ return this.adapter.getUser();
209
+ }
210
+ getSchema() {
211
+ return this.adapter.getSchema();
212
+ }
213
+ getHost() {
214
+ return this.adapter.getHost();
215
+ }
216
+ connect() {
217
+ return Promise.resolve(this.client);
218
+ }
219
+ async query(text, values) {
220
+ return await performQueryOnClient(this.client, text, values);
221
+ }
222
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
223
+ async arrays(text, values) {
224
+ return await performQueryOnClient(this.client, text, values, "array");
225
+ }
226
+ async transaction(_options, cb) {
227
+ return await cb(this);
228
+ }
229
+ close() {
230
+ return this.adapter.close();
231
+ }
232
+ assignError(to, from) {
233
+ return this.adapter.assignError(to, from);
234
+ }
235
+ }
236
+
237
+ export { NodePostgresAdapter, NodePostgresTransactionAdapter, createDb };
238
+ //# sourceMappingURL=node-postgres.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-postgres.mjs","sources":["../src/adapters/node-postgres.ts"],"sourcesContent":["import pg, { DatabaseError, Pool, PoolClient, PoolConfig } from 'pg';\nimport {\n AdapterBase,\n AdapterConfigBase,\n ColumnSchemaConfig,\n emptyObject,\n QueryArraysResult,\n QueryError,\n QueryResult,\n QueryResultRow,\n returnArg,\n setConnectRetryConfig,\n wrapAdapterFnWithConnectRetry,\n} from 'orchid-core';\nimport {\n DefaultColumnTypes,\n DefaultSchemaConfig,\n DbOptions,\n DbResult,\n createDbWithAdapter,\n} from 'pqb';\n\nexport const createDb = <\n SchemaConfig extends ColumnSchemaConfig = DefaultSchemaConfig,\n ColumnTypes = DefaultColumnTypes<SchemaConfig>,\n>({\n log,\n ...options\n}: DbOptions<SchemaConfig, ColumnTypes> &\n Omit<NodePostgresAdapterOptions, 'log'>): DbResult<ColumnTypes> => {\n return createDbWithAdapter({\n ...options,\n log,\n adapter: new NodePostgresAdapter(options),\n });\n};\n\nconst { types } = pg;\n\nexport interface TypeParsers {\n [K: number]: (input: string) => unknown;\n}\n\nconst defaultTypeParsers: TypeParsers = {};\n\nfor (const key in types.builtins) {\n const id = types.builtins[key as keyof typeof types.builtins];\n defaultTypeParsers[id] = types.getTypeParser(id);\n}\n\n[\n types.builtins.DATE,\n types.builtins.TIMESTAMP,\n types.builtins.TIMESTAMPTZ,\n types.builtins.CIRCLE,\n].forEach((id) => {\n delete defaultTypeParsers[id];\n});\n\nexport interface AdapterConfig\n extends AdapterConfigBase,\n Omit<PoolConfig, 'types' | 'connectionString'> {\n schema?: string;\n databaseURL?: string;\n}\n\nexport type NodePostgresAdapterOptions = Omit<AdapterConfig, 'log'>;\n\nexport class NodePostgresAdapter implements AdapterBase {\n pool: Pool;\n schema?: string;\n errorClass = DatabaseError;\n\n constructor(public config: NodePostgresAdapterOptions) {\n let schema = config.schema;\n if (config.databaseURL) {\n const url = new URL(config.databaseURL);\n\n const ssl = url.searchParams.get('ssl');\n\n if (ssl === 'false') {\n url.searchParams.delete('ssl');\n } else if (!config.ssl && ssl === 'true') {\n config.ssl = true;\n }\n\n if (!schema) {\n schema = url.searchParams.get('schema') || undefined;\n }\n\n config.databaseURL = url.toString();\n (config as PoolConfig).connectionString = config.databaseURL;\n }\n\n if (schema) this.schema = schema === 'public' ? undefined : schema;\n\n this.config = config;\n this.pool = new pg.Pool(config);\n\n if (config.connectRetry) {\n setConnectRetryConfig(\n this,\n config.connectRetry === true ? emptyObject : config.connectRetry,\n );\n\n this.connect = wrapAdapterFnWithConnectRetry(this, () =>\n this.pool.connect(),\n );\n }\n }\n\n private getURL(): URL | undefined {\n return this.config.databaseURL\n ? new URL(this.config.databaseURL)\n : undefined;\n }\n\n reconfigure(params: {\n database?: string;\n user?: string;\n password?: string;\n schema?: string;\n }): NodePostgresAdapter {\n const url = this.getURL();\n if (url) {\n if ('database' in params) {\n url.pathname = `/${params.database}`;\n }\n\n if (params.user !== undefined) {\n url.username = params.user;\n }\n\n if (params.password !== undefined) {\n url.password = params.password;\n }\n\n if (params.schema !== undefined) {\n url.searchParams.set('schema', params.schema);\n }\n\n return new NodePostgresAdapter({\n ...this.config,\n databaseURL: url.toString(),\n });\n } else {\n return new NodePostgresAdapter({ ...this.config, ...params });\n }\n }\n\n getDatabase(): string {\n const url = this.getURL();\n return url ? url.pathname.slice(1) : (this.config.database as string);\n }\n\n getUser(): string {\n const url = this.getURL();\n return url ? url.username : (this.config.user as string);\n }\n\n getSchema(): string | undefined {\n return this.schema;\n }\n\n getHost(): string {\n const url = this.getURL();\n return url ? url.hostname : (this.config.host as string);\n }\n\n connect(): Promise<PoolClient> {\n return this.pool.connect();\n }\n\n query<T extends QueryResultRow = QueryResultRow>(\n text: string,\n values?: unknown[],\n ): Promise<QueryResult<T>> {\n return performQuery(this, text, values) as never;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n arrays<R extends any[] = any[]>(\n text: string,\n values?: unknown[],\n ): Promise<QueryArraysResult<R>> {\n return performQuery(this, text, values, 'array') as never;\n }\n\n async transaction<Result>(\n options: string | undefined,\n cb: (adapter: NodePostgresTransactionAdapter) => Promise<Result>,\n ): Promise<Result> {\n const client = await this.connect();\n try {\n await setSearchPath(client, this.schema);\n await performQueryOnClient(\n client,\n options ? 'BEGIN ' + options : 'BEGIN',\n );\n let result;\n try {\n result = await cb(new NodePostgresTransactionAdapter(this, client));\n } catch (err) {\n await performQueryOnClient(client, 'ROLLBACK');\n throw err;\n }\n await performQueryOnClient(client, 'COMMIT');\n return result;\n } finally {\n client.release();\n }\n }\n\n close(): Promise<void> {\n const { pool } = this;\n this.pool = new pg.Pool(this.config);\n return pool.end();\n }\n\n assignError(to: QueryError, dbError: Error) {\n const from = dbError as DatabaseError;\n to.message = from.message;\n (to as { length?: number }).length = from.length;\n (to as { name?: string }).name = from.name;\n to.severity = from.severity;\n to.code = from.code;\n to.detail = from.detail;\n to.hint = from.hint;\n to.position = from.position;\n to.internalPosition = from.internalPosition;\n to.internalQuery = from.internalQuery;\n to.where = from.where;\n to.schema = from.schema;\n to.table = from.table;\n to.column = from.column;\n to.dataType = from.dataType;\n to.constraint = from.constraint;\n to.file = from.file;\n to.line = from.line;\n to.routine = from.routine;\n }\n}\n\nconst defaultTypesConfig = {\n getTypeParser(id: number) {\n return defaultTypeParsers[id] || returnArg;\n },\n};\n\ninterface ConnectionSchema {\n connection: { schema?: string };\n}\n\nconst setSearchPath = (client: PoolClient, schema?: string) => {\n if ((client as unknown as ConnectionSchema).connection.schema !== schema) {\n (client as unknown as ConnectionSchema).connection.schema = schema;\n return client.query(`SET search_path = ${schema || 'public'}`);\n }\n return;\n};\n\nconst performQuery = async (\n adapter: NodePostgresAdapter,\n text: string,\n values?: unknown[],\n rowMode?: 'array',\n) => {\n const client = await adapter.connect();\n try {\n await setSearchPath(client, adapter.schema);\n return await performQueryOnClient(client, text, values, rowMode);\n } finally {\n client.release();\n }\n};\n\nconst performQueryOnClient = (\n client: PoolClient,\n text: string,\n values?: unknown[],\n rowMode?: 'array',\n) => {\n const params = {\n text,\n values,\n rowMode,\n types: defaultTypesConfig,\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return client.query(params as any);\n};\n\nexport class NodePostgresTransactionAdapter implements AdapterBase {\n pool: Pool;\n config: PoolConfig;\n schema?: string;\n errorClass = DatabaseError;\n\n constructor(public adapter: NodePostgresAdapter, public client: PoolClient) {\n this.pool = adapter.pool;\n this.config = adapter.config;\n this.schema = adapter.schema;\n }\n\n reconfigure(params: {\n database?: string;\n user?: string;\n password?: string;\n schema?: string;\n }): AdapterBase {\n return this.adapter.reconfigure(params);\n }\n\n getDatabase(): string {\n return this.adapter.getDatabase();\n }\n\n getUser(): string {\n return this.adapter.getUser();\n }\n\n getSchema(): string | undefined {\n return this.adapter.getSchema();\n }\n\n getHost(): string {\n return this.adapter.getHost();\n }\n\n connect(): Promise<PoolClient> {\n return Promise.resolve(this.client);\n }\n\n async query<T extends QueryResultRow = QueryResultRow>(\n text: string,\n values?: unknown[],\n ): Promise<QueryResult<T>> {\n return await performQueryOnClient(this.client, text, values);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async arrays<R extends any[] = any[]>(\n text: string,\n values?: unknown[],\n ): Promise<QueryArraysResult<R>> {\n return await performQueryOnClient(this.client, text, values, 'array');\n }\n\n async transaction<Result>(\n _options: string | undefined,\n cb: (adapter: NodePostgresTransactionAdapter) => Promise<Result>,\n ): Promise<Result> {\n return await cb(this);\n }\n\n close() {\n return this.adapter.close();\n }\n\n assignError(to: QueryError, from: Error) {\n return this.adapter.assignError(to, from);\n }\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import * as orchid_core from 'orchid-core';
2
+ import { ColumnSchemaConfig, AdapterConfigBase, AdapterBase, QueryResultRow, QueryResult, QueryArraysResult, QueryError } from 'orchid-core';
3
+ import postgres, { Error } from 'postgres';
4
+ import { DbOptions, DefaultSchemaConfig, DefaultColumnTypes, DbResult } from 'pqb';
5
+
6
+ interface CreatePostgresJsDbOptions<SchemaConfig extends ColumnSchemaConfig, ColumnTypes> extends PostgresJsAdapterOptions, DbOptions<SchemaConfig, ColumnTypes> {
7
+ }
8
+ declare const createDb: <SchemaConfig extends ColumnSchemaConfig<orchid_core.ColumnTypeBase<orchid_core.ColumnTypeSchemaArg, unknown, any, any, unknown, unknown, any, unknown, any, orchid_core.ColumnDataBase>> = DefaultSchemaConfig, ColumnTypes = DefaultColumnTypes<SchemaConfig>>(options: CreatePostgresJsDbOptions<SchemaConfig, ColumnTypes>) => DbResult<ColumnTypes>;
9
+ interface PostgresJsAdapterOptions extends postgres.Options<any>, AdapterConfigBase {
10
+ databaseURL?: string;
11
+ schema?: string;
12
+ }
13
+ declare class PostgresJsAdapter implements AdapterBase {
14
+ sql: postgres.Sql;
15
+ schema?: string;
16
+ config: PostgresJsAdapterOptions;
17
+ errorClass: typeof postgres.PostgresError;
18
+ constructor(config: PostgresJsAdapterOptions);
19
+ private getURL;
20
+ reconfigure(params: {
21
+ database?: string;
22
+ user?: string;
23
+ password?: string;
24
+ schema?: string;
25
+ }): AdapterBase;
26
+ getDatabase(): string;
27
+ getUser(): string;
28
+ getSchema(): string | undefined;
29
+ getHost(): string;
30
+ query<T extends QueryResultRow = QueryResultRow>(text: string, values?: unknown[]): Promise<QueryResult<T>>;
31
+ arrays<R extends any[] = any[]>(text: string, values?: unknown[]): Promise<QueryArraysResult<R>>;
32
+ transaction<Result>(options: string | undefined, cb: (adapter: AdapterBase) => Promise<Result>): Promise<Result>;
33
+ close(): Promise<void>;
34
+ assignError(to: QueryError, dbError: Error): void;
35
+ }
36
+ declare class PostgresJsTransactionAdapter implements AdapterBase {
37
+ adapter: PostgresJsAdapter;
38
+ sql: postgres.Sql;
39
+ errorClass: typeof postgres.PostgresError;
40
+ constructor(adapter: PostgresJsAdapter, sql: postgres.Sql);
41
+ reconfigure(params: {
42
+ database?: string;
43
+ user?: string;
44
+ password?: string;
45
+ schema?: string;
46
+ }): AdapterBase;
47
+ getDatabase(): string;
48
+ getUser(): string;
49
+ getSchema(): string | undefined;
50
+ getHost(): string;
51
+ query<T extends QueryResultRow = QueryResultRow>(text: string, values?: unknown[]): Promise<QueryResult<T>>;
52
+ arrays<R extends any[] = any[]>(text: string, values?: unknown[]): Promise<QueryArraysResult<R>>;
53
+ transaction<Result>(_options: string | undefined, cb: (adapter: PostgresJsTransactionAdapter) => Promise<Result>): Promise<Result>;
54
+ close(): Promise<void>;
55
+ assignError(to: QueryError, from: Error): void;
56
+ }
57
+
58
+ export { type CreatePostgresJsDbOptions, PostgresJsAdapter, type PostgresJsAdapterOptions, PostgresJsTransactionAdapter, createDb };