@spinajs/orm-postgres 2.0.557 → 3.0.0
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.
- package/README.md +20 -20
- package/lib/cjs/compilers.d.ts +5 -5
- package/lib/cjs/compilers.d.ts.map +1 -1
- package/lib/cjs/compilers.js +23 -17
- package/lib/cjs/compilers.js.map +1 -1
- package/lib/cjs/converters.d.ts +7 -7
- package/lib/cjs/converters.d.ts.map +1 -1
- package/lib/cjs/converters.js +18 -40
- package/lib/cjs/converters.js.map +1 -1
- package/lib/cjs/errors.d.ts +4 -0
- package/lib/cjs/errors.d.ts.map +1 -0
- package/lib/cjs/errors.js +31 -0
- package/lib/cjs/errors.js.map +1 -0
- package/lib/cjs/expressions.d.ts +9 -0
- package/lib/cjs/expressions.d.ts.map +1 -0
- package/lib/cjs/expressions.js +22 -0
- package/lib/cjs/expressions.js.map +1 -0
- package/lib/cjs/index.d.ts +12 -3
- package/lib/cjs/index.d.ts.map +1 -1
- package/lib/cjs/index.js +95 -35
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/statements.d.ts +19 -6
- package/lib/cjs/statements.d.ts.map +1 -1
- package/lib/cjs/statements.js +37 -8
- package/lib/cjs/statements.js.map +1 -1
- package/lib/mjs/compilers.d.ts +5 -5
- package/lib/mjs/compilers.d.ts.map +1 -1
- package/lib/mjs/compilers.js +23 -17
- package/lib/mjs/compilers.js.map +1 -1
- package/lib/mjs/converters.d.ts +7 -7
- package/lib/mjs/converters.d.ts.map +1 -1
- package/lib/mjs/converters.js +19 -41
- package/lib/mjs/converters.js.map +1 -1
- package/lib/mjs/errors.d.ts +4 -0
- package/lib/mjs/errors.d.ts.map +1 -0
- package/lib/mjs/errors.js +28 -0
- package/lib/mjs/errors.js.map +1 -0
- package/lib/mjs/expressions.d.ts +9 -0
- package/lib/mjs/expressions.d.ts.map +1 -0
- package/lib/mjs/expressions.js +18 -0
- package/lib/mjs/expressions.js.map +1 -0
- package/lib/mjs/index.d.ts +12 -3
- package/lib/mjs/index.d.ts.map +1 -1
- package/lib/mjs/index.js +97 -39
- package/lib/mjs/index.js.map +1 -1
- package/lib/mjs/statements.d.ts +19 -6
- package/lib/mjs/statements.d.ts.map +1 -1
- package/lib/mjs/statements.js +37 -9
- package/lib/mjs/statements.js.map +1 -1
- package/lib/tsconfig.cjs.tsbuildinfo +1 -1
- package/lib/tsconfig.mjs.tsbuildinfo +1 -1
- package/package.json +13 -10
package/lib/mjs/compilers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compilers.js","sourceRoot":"","sources":["../../src/compilers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"compilers.js","sourceRoot":"","sources":["../../src/compilers.ts"],"names":[],"mappings":"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"}
|
package/lib/mjs/converters.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { IColumnDescriptor, IDehydrateOptions, JsonValueConverter, ModelBase } from '@spinajs/orm';
|
|
2
|
+
import { IsoDatetimeValueConverter } from '@spinajs/orm-sql';
|
|
2
3
|
import { DateTime } from 'luxon';
|
|
3
4
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* the formats of the shared SQL converter.
|
|
5
|
+
* {@link IsoDatetimeValueConverter} ( UTC instants ) with two exceptions: an unset value stays
|
|
6
|
+
* unset, and a DATE column takes the calendar day of the value in its own zone.
|
|
7
7
|
*/
|
|
8
|
-
export declare class PostgresDatetimeValueConverter extends
|
|
9
|
-
toDB(value:
|
|
10
|
-
fromDB(value:
|
|
8
|
+
export declare class PostgresDatetimeValueConverter extends IsoDatetimeValueConverter {
|
|
9
|
+
toDB(value: unknown, model?: ModelBase<unknown>, column?: IColumnDescriptor, options?: unknown, ...dehydrating: [IDehydrateOptions?]): any;
|
|
10
|
+
fromDB(value: unknown): DateTime | null;
|
|
11
11
|
}
|
|
12
12
|
/** node-postgres already parses json/jsonb; a string here is either a JSON string value or JSON text from a TEXT column. */
|
|
13
13
|
export declare class PostgresJsonValueConverter extends JsonValueConverter {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"converters.d.ts","sourceRoot":"","sources":["../../src/converters.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"converters.d.ts","sourceRoot":"","sources":["../../src/converters.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,SAAS,EAAa,MAAM,cAAc,CAAC;AAC9G,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAIjC;;;GAGG;AACH,qBAAa,8BAA+B,SAAQ,yBAAyB;IACpE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,GAAG,WAAW,EAAE,CAAC,iBAAiB,CAAC,CAAC,GAAG,GAAG,CAmBhJ;IAEM,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,IAAI,CAO7C;CACF;AAED,4HAA4H;AAC5H,qBAAa,0BAA2B,SAAQ,kBAAkB;IACzD,MAAM,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG,CAS7B;CACF"}
|
package/lib/mjs/converters.js
CHANGED
|
@@ -1,58 +1,36 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import {
|
|
2
|
+
import { JsonValueConverter, toInstant } from '@spinajs/orm';
|
|
3
|
+
import { IsoDatetimeValueConverter } from '@spinajs/orm-sql';
|
|
3
4
|
import { DateTime } from 'luxon';
|
|
4
|
-
const
|
|
5
|
+
const PG_NUMERIC_TYPES = ['int2', 'int4', 'int8', 'numeric', 'float4', 'float8'];
|
|
5
6
|
/**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* the formats of the shared SQL converter.
|
|
7
|
+
* {@link IsoDatetimeValueConverter} ( UTC instants ) with two exceptions: an unset value stays
|
|
8
|
+
* unset, and a DATE column takes the calendar day of the value in its own zone.
|
|
9
9
|
*/
|
|
10
|
-
export class PostgresDatetimeValueConverter extends
|
|
11
|
-
toDB(value,
|
|
10
|
+
export class PostgresDatetimeValueConverter extends IsoDatetimeValueConverter {
|
|
11
|
+
toDB(value, model, column, options, ...dehydrating) {
|
|
12
12
|
// undefined stays undefined: the insert then writes DEFAULT (e.g. CURRENT_TIMESTAMP) instead of NULL
|
|
13
|
-
if (value ===
|
|
14
|
-
return
|
|
13
|
+
if (value === undefined) {
|
|
14
|
+
return undefined;
|
|
15
15
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
return dt.toISO();
|
|
21
|
-
case 'unix':
|
|
22
|
-
return dt.toUnixInteger() ?? 0;
|
|
23
|
-
case 'sql':
|
|
24
|
-
return dt.toSQL({ includeOffset: false });
|
|
16
|
+
if (dehydrating.length === 0 && column?.Type === 'date') {
|
|
17
|
+
const day = DateTime.isDateTime(value) ? value : value instanceof Date ? DateTime.fromJSDate(value) : null;
|
|
18
|
+
if (day?.isValid) {
|
|
19
|
+
return day.toISODate();
|
|
25
20
|
}
|
|
26
21
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
if (dehydrateOptions) {
|
|
31
|
-
return dt.toSQL({ includeOffset: false });
|
|
32
|
-
}
|
|
33
|
-
// a DATE is a calendar day in the value's own zone, not an instant
|
|
34
|
-
if (column?.Type === 'date') {
|
|
35
|
-
return dt.toISODate();
|
|
22
|
+
// tableInfo() reports udt names ( int8, float8 ), which the shared numeric-type list does not know
|
|
23
|
+
if (dehydrating.length === 0 && column && PG_NUMERIC_TYPES.includes(column.Type)) {
|
|
24
|
+
return toInstant(value, column.Name)?.toUnixInteger() ?? null;
|
|
36
25
|
}
|
|
37
|
-
return
|
|
26
|
+
return super.toDB(value, model, column, options, ...dehydrating);
|
|
38
27
|
}
|
|
39
28
|
fromDB(value) {
|
|
40
|
-
if (value === null || value === undefined || value === '') {
|
|
41
|
-
return null;
|
|
42
|
-
}
|
|
43
29
|
// model construction runs assigned values through here too; converting the zone would move a DATE's day
|
|
44
|
-
if (DateTime.isDateTime(value)) {
|
|
30
|
+
if (DateTime.isDateTime(value) && value.isValid) {
|
|
45
31
|
return value;
|
|
46
32
|
}
|
|
47
|
-
|
|
48
|
-
return DateTime.fromJSDate(value, { zone: 'utc' });
|
|
49
|
-
}
|
|
50
|
-
if (typeof value === 'number') {
|
|
51
|
-
return DateTime.fromSeconds(value, { zone: 'utc' });
|
|
52
|
-
}
|
|
53
|
-
// text without an offset (a raw query, a legacy TIMESTAMP read without the type parser) is UTC
|
|
54
|
-
const iso = DateTime.fromISO(value, { zone: 'utc' });
|
|
55
|
-
return iso.isValid ? iso : DateTime.fromSQL(value, { zone: 'utc' });
|
|
33
|
+
return super.fromDB(value);
|
|
56
34
|
}
|
|
57
35
|
}
|
|
58
36
|
/** node-postgres already parses json/jsonb; a string here is either a JSON string value or JSON text from a TEXT column. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"converters.js","sourceRoot":"","sources":["../../src/converters.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,
|
|
1
|
+
{"version":3,"file":"converters.js","sourceRoot":"","sources":["../../src/converters.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,EAAwC,kBAAkB,EAAa,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9G,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAEjF;;;GAGG;AACH,MAAM,OAAO,8BAA+B,SAAQ,yBAAyB;IACpE,IAAI,CAAC,KAAc,EAAE,KAA0B,EAAE,MAA0B,EAAE,OAAiB,EAAE,GAAG,WAAiC;QACzI,qGAAqG;QACrG,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;YACxD,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3G,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC;gBACjB,OAAO,GAAG,CAAC,SAAS,EAAE,CAAC;YACzB,CAAC;QACH,CAAC;QAED,mGAAmG;QACnG,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,IAAI,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACjF,OAAO,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,IAAI,IAAI,CAAC;QAChE,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC,CAAC;IACnE,CAAC;IAEM,MAAM,CAAC,KAAc;QAC1B,wGAAwG;QACxG,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAChD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;CACF;AAED,4HAA4H;AAC5H,MAAM,OAAO,0BAA2B,SAAQ,kBAAkB;IACzD,MAAM,CAAC,KAAU;QACtB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { IDriverOptions } from '@spinajs/orm';
|
|
2
|
+
/** Maps a node-postgres error by its SQLSTATE: `23505` is a duplicate, the rest of class 23 another constraint. */
|
|
3
|
+
export declare function mapPostgresError(err: unknown, driver: Partial<IDriverOptions>, query: string, bindings: unknown): Error;
|
|
4
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,cAAc,EAAiC,MAAM,cAAc,CAAC;AAgBlH,mHAAmH;AACnH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,KAAK,CAgBvH"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { ConstraintViolation, OrmException, UniqueViolation } from '@spinajs/orm';
|
|
2
|
+
const PG_CONSTRAINT_KINDS = {
|
|
3
|
+
'23502': 'not_null',
|
|
4
|
+
'23503': 'foreign_key',
|
|
5
|
+
'23514': 'check',
|
|
6
|
+
};
|
|
7
|
+
const text = (value) => (typeof value === 'string' && value.length > 0 ? value : undefined);
|
|
8
|
+
// `Key ("Email", tenant)=(a@x, 1) already exists.`
|
|
9
|
+
function keyColumns(detail) {
|
|
10
|
+
const key = typeof detail === 'string' ? /^Key \((.+?)\)=/.exec(detail) : null;
|
|
11
|
+
return key ? key[1].split(',').map((c) => c.trim().replace(/^"(.*)"$/, '$1')) : undefined;
|
|
12
|
+
}
|
|
13
|
+
/** Maps a node-postgres error by its SQLSTATE: `23505` is a duplicate, the rest of class 23 another constraint. */
|
|
14
|
+
export function mapPostgresError(err, driver, query, bindings) {
|
|
15
|
+
const native = err;
|
|
16
|
+
const code = typeof native?.code === 'string' ? native.code : '';
|
|
17
|
+
const message = String(native?.message ?? err);
|
|
18
|
+
const info = { table: text(native?.table), constraint: text(native?.constraint) };
|
|
19
|
+
if (code === '23505') {
|
|
20
|
+
return new UniqueViolation(message, { ...info, columns: keyColumns(native?.detail) }, err);
|
|
21
|
+
}
|
|
22
|
+
if (code.startsWith('23')) {
|
|
23
|
+
const column = text(native?.column);
|
|
24
|
+
return new ConstraintViolation(message, PG_CONSTRAINT_KINDS[code] ?? 'other', { ...info, columns: column ? [column] : undefined }, driver, query, bindings, err);
|
|
25
|
+
}
|
|
26
|
+
return new OrmException('Error executing orm command ', driver, query, bindings, err);
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,mBAAmB,EAAkB,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAElH,MAAM,mBAAmB,GAAmC;IAC1D,OAAO,EAAE,UAAU;IACnB,OAAO,EAAE,aAAa;IACtB,OAAO,EAAE,OAAO;CACjB,CAAC;AAEF,MAAM,IAAI,GAAG,CAAC,KAAc,EAAsB,EAAE,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAEzH,mDAAmD;AACnD,SAAS,UAAU,CAAC,MAAe;IACjC,MAAM,GAAG,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/E,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5F,CAAC;AAED,mHAAmH;AACnH,MAAM,UAAU,gBAAgB,CAAC,GAAY,EAAE,MAA+B,EAAE,KAAa,EAAE,QAAiB;IAC9G,MAAM,MAAM,GAAG,GAA0I,CAAC;IAC1J,MAAM,IAAI,GAAG,OAAO,MAAM,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC;IAElF,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,OAAO,IAAI,eAAe,CAAC,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAC7F,CAAC;IAED,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACpC,OAAO,IAAI,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,CAAC,IAAI,CAAC,IAAI,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IACnK,CAAC;IAED,OAAO,IAAI,YAAY,CAAC,8BAA8B,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;AACxF,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { SqlExpressions } from '@spinajs/orm';
|
|
2
|
+
import type { SqlFragment } from '@spinajs/orm';
|
|
3
|
+
export declare class PostgresSqlExpressions extends SqlExpressions {
|
|
4
|
+
castText(expression: string): string;
|
|
5
|
+
datetimeText(expression: string): string;
|
|
6
|
+
contains(haystack: SqlFragment, needle: SqlFragment): SqlFragment;
|
|
7
|
+
equalsExactly(left: string, right: SqlFragment): SqlFragment;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=expressions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expressions.d.ts","sourceRoot":"","sources":["../../src/expressions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,qBAAa,sBAAuB,SAAQ,cAAc;IACjD,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE1C;IAGM,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE9C;IAEM,QAAQ,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,GAAG,WAAW,CAEvE;IAGM,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,WAAW,CAElE;CACF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { SqlExpressions } from '@spinajs/orm';
|
|
2
|
+
export class PostgresSqlExpressions extends SqlExpressions {
|
|
3
|
+
castText(expression) {
|
|
4
|
+
return `CAST(${expression} AS TEXT)`;
|
|
5
|
+
}
|
|
6
|
+
// Read as a timestamp, node-postgres would place the wall-clock time in the process zone.
|
|
7
|
+
datetimeText(expression) {
|
|
8
|
+
return `CAST(${expression} AS TEXT)`;
|
|
9
|
+
}
|
|
10
|
+
contains(haystack, needle) {
|
|
11
|
+
return { sql: `strpos(${haystack.sql}, ${needle.sql}) > 0`, bindings: [...haystack.bindings, ...needle.bindings] };
|
|
12
|
+
}
|
|
13
|
+
// The default collations are deterministic.
|
|
14
|
+
equalsExactly(left, right) {
|
|
15
|
+
return { sql: `${left} = ${right.sql}`, bindings: [...right.bindings] };
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=expressions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expressions.js","sourceRoot":"","sources":["../../src/expressions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9C,MAAM,OAAO,sBAAuB,SAAQ,cAAc;IACjD,QAAQ,CAAC,UAAkB;QAChC,OAAO,QAAQ,UAAU,WAAW,CAAC;IACvC,CAAC;IAED,0FAA0F;IACnF,YAAY,CAAC,UAAkB;QACpC,OAAO,QAAQ,UAAU,WAAW,CAAC;IACvC,CAAC;IAEM,QAAQ,CAAC,QAAqB,EAAE,MAAmB;QACxD,OAAO,EAAE,GAAG,EAAE,UAAU,QAAQ,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IACrH,CAAC;IAED,4CAA4C;IACrC,aAAa,CAAC,IAAY,EAAE,KAAkB;QACnD,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC1E,CAAC;CACF"}
|
package/lib/mjs/index.d.ts
CHANGED
|
@@ -2,7 +2,9 @@ import { QueryContext, OrmDriver, IColumnDescriptor, ServerResponseMapper, ISupp
|
|
|
2
2
|
import { SqlDriver } from '@spinajs/orm-sql';
|
|
3
3
|
import pg from 'pg';
|
|
4
4
|
export * from './compilers.js';
|
|
5
|
+
export * from './expressions.js';
|
|
5
6
|
export * from './statements.js';
|
|
7
|
+
export * from './errors.js';
|
|
6
8
|
export * from './converters.js';
|
|
7
9
|
export interface IPostgresTransactionContext extends ITransactionContext {
|
|
8
10
|
connection: pg.PoolClient;
|
|
@@ -21,10 +23,13 @@ export declare function toPositionalParameters(stmt: string): string;
|
|
|
21
23
|
*/
|
|
22
24
|
export declare function toDriverStatement(stmt: string, params?: unknown[]): string;
|
|
23
25
|
/**
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
* midnight of its calendar day. `timestamptz` keeps the default parser: its text carries the offset.
|
|
26
|
+
* Parses `timestamp` (without time zone) as UTC: the datetime converter writes UTC into such a
|
|
27
|
+
* column, and pg's own parser reads it in the process zone.
|
|
27
28
|
*/
|
|
29
|
+
export declare function parseUtcTimestamp(value: string): unknown;
|
|
30
|
+
/** Parses `date` as UTC midnight of its calendar day; pg's own parser takes local midnight, which read as UTC is the day before east of UTC. */
|
|
31
|
+
export declare function parseUtcDate(value: string): unknown;
|
|
32
|
+
/** The pool's type parsers: `timestamp` and `date` as UTC, the rest as pg reads them ( `timestamptz` text carries its offset ). */
|
|
28
33
|
export declare function utcTypeParser(oid: number, format?: string): (value: string) => unknown;
|
|
29
34
|
/**
|
|
30
35
|
* `column_default` is SQL text, and a new model copies `DefaultValue` into its properties.
|
|
@@ -47,6 +52,8 @@ export declare class PostgresOrmDriver extends SqlDriver {
|
|
|
47
52
|
* READ COMMITTED, which is the standard-permitted upgrade, so it is not refused here.
|
|
48
53
|
*/
|
|
49
54
|
readonly SupportedIsolationLevels: IsolationLevel[];
|
|
55
|
+
/** The wire protocol counts parameters in an Int16. */
|
|
56
|
+
readonly MaxBindings = 65535;
|
|
50
57
|
/**
|
|
51
58
|
* pg hands NUMERIC/DECIMAL and BIGINT back as STRINGS: both can exceed 2^53, where a
|
|
52
59
|
* float loses exactly the precision those types exist to keep, so node-postgres refuses
|
|
@@ -62,8 +69,10 @@ export declare class PostgresOrmDriver extends SqlDriver {
|
|
|
62
69
|
/** pg.Pool publishes its bookkeeping — no private-field spelunking needed here. */
|
|
63
70
|
poolMetrics(): IPoolMetrics;
|
|
64
71
|
ping(): Promise<boolean>;
|
|
72
|
+
protected poolConfig(): pg.PoolConfig;
|
|
65
73
|
connect(): Promise<OrmDriver>;
|
|
66
74
|
disconnect(): Promise<OrmDriver>;
|
|
75
|
+
lockTableShared(table: string): Promise<void>;
|
|
67
76
|
tableInfo(name: string, schema?: string): Promise<IColumnDescriptor[]>;
|
|
68
77
|
/**
|
|
69
78
|
* Pulls the pooled client out of a transaction context. The base class only ever hands
|
package/lib/mjs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/lib/mjs/index.js
CHANGED
|
@@ -5,15 +5,19 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
7
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
8
|
+
import { PostgresSqlExpressions } from './expressions.js';
|
|
8
9
|
import { Injectable, NewInstance } from '@spinajs/di';
|
|
9
|
-
import { QueryContext, TableExistsCompiler,
|
|
10
|
-
import { SqlDriver, SqlTruncateTableQueryCompiler, SqlWithRecursiveCompiler, SqlDropDatabaseQueryCompiler, UnsupportedEventQueryCompiler, UnsupportedDropEventQueryCompiler } from '@spinajs/orm-sql';
|
|
10
|
+
import { QueryContext, TableExistsCompiler, ServerResponseMapper, ConnectionState, IdentifierQuoter, InStatement, OnDuplicateQueryCompiler, ColumnQueryCompiler, AlterColumnQueryCompiler, AlterTableQueryCompiler, RawQuery, LimitQueryCompiler, TruncateTableQueryCompiler, RecursiveQueryCompiler, DefaultValueBuilder, InsertQueryCompiler, CreateDatabaseCompiler, DropDatabaseCompiler, TableAliasCompiler, CreateViewCompiler, LiteralQuoter, EventQueryCompiler, DropEventQueryCompiler, DatetimeValueConverter, JsonValueConverter, NowExpression, JoinStatement, DateTimeWrapper, SqlExpressions, IndexQueryCompiler } from '@spinajs/orm';
|
|
11
|
+
import { SqlDriver, SqlTruncateTableQueryCompiler, SqlWithRecursiveCompiler, SqlAlterTableQueryCompiler, SqlDropDatabaseQueryCompiler, UnsupportedEventQueryCompiler, UnsupportedDropEventQueryCompiler } from '@spinajs/orm-sql';
|
|
11
12
|
import pg from 'pg';
|
|
12
|
-
import { PostgresTableExistsCompiler,
|
|
13
|
-
import { DoubleQuoteIdentifierQuoter, pgEscapeIdentifier,
|
|
13
|
+
import { PostgresTableExistsCompiler, PostgresLimitQueryCompiler, PostgresOnDuplicateQueryCompiler, PostgresInsertQueryCompiler, PostgresColumnQueryCompiler, PostgresAlterColumnQueryCompiler, PostgresCreateDatabaseQueryCompiler, PostgresDefaultValueBuilder, PostgresTableAliasCompiler, PostgresCreateViewCompiler, PostgresIndexQueryCompiler } from './compilers.js';
|
|
14
|
+
import { DoubleQuoteIdentifierQuoter, pgEscapeIdentifier, PostgresInStatement, PostgresLiteralQuoter, PostgresNowExpression, PostgresJoinStatement, PostgresDateTimeWrapper } from './statements.js';
|
|
15
|
+
import { mapPostgresError } from './errors.js';
|
|
14
16
|
import { PostgresDatetimeValueConverter, PostgresJsonValueConverter } from './converters.js';
|
|
15
17
|
export * from './compilers.js';
|
|
18
|
+
export * from './expressions.js';
|
|
16
19
|
export * from './statements.js';
|
|
20
|
+
export * from './errors.js';
|
|
17
21
|
export * from './converters.js';
|
|
18
22
|
/**
|
|
19
23
|
* SQLSTATE classes that mean the transport died rather than the statement being wrong.
|
|
@@ -38,23 +42,45 @@ export function toPositionalParameters(stmt) {
|
|
|
38
42
|
*/
|
|
39
43
|
export function toDriverStatement(stmt, params) {
|
|
40
44
|
const count = params?.length ?? 0;
|
|
45
|
+
if (count === 0) {
|
|
46
|
+
return stmt;
|
|
47
|
+
}
|
|
48
|
+
// Quoted literals / identifiers and the jsonb operators `?|` `?&` are text, not placeholders.
|
|
41
49
|
let i = 0;
|
|
42
|
-
return stmt.replace(
|
|
50
|
+
return stmt.replace(/'(?:[^']|'')*'|"(?:[^"]|"")*"|\?&|\?\|(?!\|)|\?/g, (match) => (match === '?' && i < count ? `$${++i}` : match));
|
|
43
51
|
}
|
|
44
|
-
const
|
|
45
|
-
const
|
|
52
|
+
const defaultParser = pg.types.getTypeParser;
|
|
53
|
+
const parseTimestamptz = defaultParser(pg.types.builtins.TIMESTAMPTZ, 'text');
|
|
54
|
+
const parseDate = defaultParser(pg.types.builtins.DATE, 'text');
|
|
46
55
|
/**
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
* midnight of its calendar day. `timestamptz` keeps the default parser: its text carries the offset.
|
|
56
|
+
* Parses `timestamp` (without time zone) as UTC: the datetime converter writes UTC into such a
|
|
57
|
+
* column, and pg's own parser reads it in the process zone.
|
|
50
58
|
*/
|
|
59
|
+
export function parseUtcTimestamp(value) {
|
|
60
|
+
if (value === 'infinity' || value === '-infinity') {
|
|
61
|
+
return parseTimestamptz(value);
|
|
62
|
+
}
|
|
63
|
+
return value.endsWith(' BC') ? parseTimestamptz(`${value.slice(0, -3)}+00 BC`) : parseTimestamptz(`${value}+00`);
|
|
64
|
+
}
|
|
65
|
+
/** Parses `date` as UTC midnight of its calendar day; pg's own parser takes local midnight, which read as UTC is the day before east of UTC. */
|
|
66
|
+
export function parseUtcDate(value) {
|
|
67
|
+
if (value === 'infinity' || value === '-infinity') {
|
|
68
|
+
return parseDate(value);
|
|
69
|
+
}
|
|
70
|
+
return value.endsWith(' BC') ? parseUtcTimestamp(`${value.slice(0, -3)} 00:00:00 BC`) : parseUtcTimestamp(`${value} 00:00:00`);
|
|
71
|
+
}
|
|
72
|
+
/** The pool's type parsers: `timestamp` and `date` as UTC, the rest as pg reads them ( `timestamptz` text carries its offset ). */
|
|
51
73
|
export function utcTypeParser(oid, format) {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
74
|
+
if (format !== 'binary' && oid === pg.types.builtins.TIMESTAMP) {
|
|
75
|
+
return parseUtcTimestamp;
|
|
76
|
+
}
|
|
77
|
+
if (format !== 'binary' && oid === pg.types.builtins.DATE) {
|
|
78
|
+
return parseUtcDate;
|
|
55
79
|
}
|
|
56
|
-
return (
|
|
80
|
+
return defaultParser(oid, format);
|
|
57
81
|
}
|
|
82
|
+
// Per pool, not the global pg.types: that registry is shared with every other pg user in the process.
|
|
83
|
+
const UTC_TYPES = { getTypeParser: utcTypeParser };
|
|
58
84
|
const QUOTED_LITERAL_DEFAULT = /^'((?:[^']|'')*)'::[a-z0-9_ ."]+$/i;
|
|
59
85
|
const NUMERIC_LITERAL_DEFAULT = /^\(?-?\d+(\.\d+)?\)?$/;
|
|
60
86
|
/**
|
|
@@ -118,6 +144,8 @@ let PostgresOrmDriver = class PostgresOrmDriver extends SqlDriver {
|
|
|
118
144
|
* READ COMMITTED, which is the standard-permitted upgrade, so it is not refused here.
|
|
119
145
|
*/
|
|
120
146
|
this.SupportedIsolationLevels = ['READ UNCOMMITTED', 'READ COMMITTED', 'REPEATABLE READ', 'SERIALIZABLE'];
|
|
147
|
+
/** The wire protocol counts parameters in an Int16. */
|
|
148
|
+
this.MaxBindings = 65535;
|
|
121
149
|
/**
|
|
122
150
|
* pg hands NUMERIC/DECIMAL and BIGINT back as STRINGS: both can exceed 2^53, where a
|
|
123
151
|
* float loses exactly the precision those types exist to keep, so node-postgres refuses
|
|
@@ -134,7 +162,8 @@ let PostgresOrmDriver = class PostgresOrmDriver extends SqlDriver {
|
|
|
134
162
|
executeOnDb(stmt, params, context) {
|
|
135
163
|
// Reads and writes are both retried: `withReconnect` only re-runs on transport
|
|
136
164
|
// failures, where the statement provably never reached the server.
|
|
137
|
-
|
|
165
|
+
const bound = this.toDriverParams(params);
|
|
166
|
+
return this.withReconnect(() => this._executeOnDbOnce(stmt, bound, context));
|
|
138
167
|
}
|
|
139
168
|
isRetryableError(err) {
|
|
140
169
|
// Inside a transaction the connection carried uncommitted state. Reconnecting and
|
|
@@ -171,6 +200,10 @@ let PostgresOrmDriver = class PostgresOrmDriver extends SqlDriver {
|
|
|
171
200
|
else {
|
|
172
201
|
// Taking the client explicitly, instead of letting `Pool.query` do it out of
|
|
173
202
|
// sight, is what makes `orm_pool_acquire_seconds` a real number instead of zero.
|
|
203
|
+
if (!this.Pool) {
|
|
204
|
+
// A failed reconnect leaves no pool; 08003 ( connection does not exist ) lets withReconnect retry.
|
|
205
|
+
throw Object.assign(new Error('postgres pool is not connected'), { code: '08003' });
|
|
206
|
+
}
|
|
174
207
|
const acquireStart = process.hrtime.bigint();
|
|
175
208
|
const client = await this.Pool.connect();
|
|
176
209
|
this.observeAcquireSeconds(Number(process.hrtime.bigint() - acquireStart) / 1e9);
|
|
@@ -202,11 +235,11 @@ let PostgresOrmDriver = class PostgresOrmDriver extends SqlDriver {
|
|
|
202
235
|
}
|
|
203
236
|
}
|
|
204
237
|
catch (err) {
|
|
205
|
-
throw
|
|
238
|
+
throw mapPostgresError(err, {
|
|
206
239
|
Host: this.Options.Host,
|
|
207
240
|
User: this.Options.User,
|
|
208
241
|
Name: this.Options.Name,
|
|
209
|
-
}, stmt, params
|
|
242
|
+
}, stmt, params);
|
|
210
243
|
}
|
|
211
244
|
}
|
|
212
245
|
supportedFeatures() {
|
|
@@ -219,6 +252,8 @@ let PostgresOrmDriver = class PostgresOrmDriver extends SqlDriver {
|
|
|
219
252
|
// With RETURNING every key comes back per row; the LAST_INSERT_ID batch walk is
|
|
220
253
|
// MySQL's workaround for not having it.
|
|
221
254
|
insertIdIsFirstOfBatch: false,
|
|
255
|
+
concurrentTransactions: true,
|
|
256
|
+
nativeJson: true,
|
|
222
257
|
};
|
|
223
258
|
}
|
|
224
259
|
resolve() {
|
|
@@ -232,11 +267,13 @@ let PostgresOrmDriver = class PostgresOrmDriver extends SqlDriver {
|
|
|
232
267
|
* dialect-specific is inherited by accident.
|
|
233
268
|
*/
|
|
234
269
|
this.Container.register(DoubleQuoteIdentifierQuoter).as(IdentifierQuoter);
|
|
270
|
+
this.Container.register(PostgresInStatement).as(InStatement);
|
|
271
|
+
this.Container.register(PostgresSqlExpressions).as(SqlExpressions);
|
|
272
|
+
this.Container.register(PostgresIndexQueryCompiler).as(IndexQueryCompiler);
|
|
235
273
|
this.Container.register(PostgresOnDuplicateQueryCompiler).as(OnDuplicateQueryCompiler);
|
|
236
274
|
this.Container.register(PostgresInsertQueryCompiler).as(InsertQueryCompiler);
|
|
237
275
|
this.Container.register(PostgresColumnQueryCompiler).as(ColumnQueryCompiler);
|
|
238
276
|
this.Container.register(PostgresAlterColumnQueryCompiler).as(AlterColumnQueryCompiler);
|
|
239
|
-
this.Container.register(PostgresAlterTableQueryCompiler).as(AlterTableQueryCompiler);
|
|
240
277
|
this.Container.register(PostgresLimitQueryCompiler).as(LimitQueryCompiler);
|
|
241
278
|
this.Container.register(PostgresCreateDatabaseQueryCompiler).as(CreateDatabaseCompiler);
|
|
242
279
|
this.Container.register(PostgresDefaultValueBuilder).as(DefaultValueBuilder);
|
|
@@ -244,9 +281,11 @@ let PostgresOrmDriver = class PostgresOrmDriver extends SqlDriver {
|
|
|
244
281
|
this.Container.register(PostgresTableAliasCompiler).as(TableAliasCompiler);
|
|
245
282
|
this.Container.register(PostgresCreateViewCompiler).as(CreateViewCompiler);
|
|
246
283
|
this.Container.register(PostgresLiteralQuoter).as(LiteralQuoter);
|
|
247
|
-
this.Container.register(PostgresJoinStatement).as(JoinStatement);
|
|
248
|
-
this.Container.register(PostgresJsonValueConverter).as(JsonValueConverter);
|
|
249
284
|
this.Container.register(PostgresDatetimeValueConverter).as(DatetimeValueConverter);
|
|
285
|
+
this.Container.register(PostgresJsonValueConverter).as(JsonValueConverter);
|
|
286
|
+
this.Container.register(PostgresNowExpression).as(NowExpression);
|
|
287
|
+
this.Container.register(PostgresJoinStatement).as(JoinStatement);
|
|
288
|
+
this.Container.register(PostgresDateTimeWrapper).as(DateTimeWrapper);
|
|
250
289
|
// Shared implementations that happen to be valid postgres, claimed explicitly.
|
|
251
290
|
// DROP DATABASE IF EXISTS is among them: with this driver's quoter injected the
|
|
252
291
|
// shared compiler already emits exactly the postgres statement.
|
|
@@ -256,6 +295,7 @@ let PostgresOrmDriver = class PostgresOrmDriver extends SqlDriver {
|
|
|
256
295
|
this.Container.register(SqlDropDatabaseQueryCompiler).as(DropDatabaseCompiler);
|
|
257
296
|
this.Container.register(SqlTruncateTableQueryCompiler).as(TruncateTableQueryCompiler);
|
|
258
297
|
this.Container.register(SqlWithRecursiveCompiler).as(RecursiveQueryCompiler);
|
|
298
|
+
this.Container.register(SqlAlterTableQueryCompiler).as(AlterTableQueryCompiler);
|
|
259
299
|
// No native scheduler in this engine, and nothing is simulated in its place.
|
|
260
300
|
this.Container.register(UnsupportedEventQueryCompiler).as(EventQueryCompiler);
|
|
261
301
|
this.Container.register(UnsupportedDropEventQueryCompiler).as(DropEventQueryCompiler);
|
|
@@ -279,11 +319,9 @@ let PostgresOrmDriver = class PostgresOrmDriver extends SqlDriver {
|
|
|
279
319
|
return false;
|
|
280
320
|
}
|
|
281
321
|
}
|
|
282
|
-
|
|
322
|
+
poolConfig() {
|
|
283
323
|
const pool = this.resolvedPoolOptions();
|
|
284
|
-
|
|
285
|
-
const previous = this.Pool;
|
|
286
|
-
this.Pool = new pg.Pool({
|
|
324
|
+
return {
|
|
287
325
|
host: this.Options.Host,
|
|
288
326
|
user: this.Options.User,
|
|
289
327
|
password: this.Options.Password,
|
|
@@ -293,32 +331,48 @@ let PostgresOrmDriver = class PostgresOrmDriver extends SqlDriver {
|
|
|
293
331
|
min: pool.Min,
|
|
294
332
|
idleTimeoutMillis: pool.IdleTimeout,
|
|
295
333
|
connectionTimeoutMillis: pool.AcquireTimeout,
|
|
296
|
-
|
|
297
|
-
|
|
334
|
+
// now(), date_trunc() and the text of a timestamptz follow the session zone. pg reads PGOPTIONS only
|
|
335
|
+
// when no options are given, so it is kept here.
|
|
336
|
+
options: `${process.env.PGOPTIONS ?? ''} -c TimeZone=UTC`.trim(),
|
|
337
|
+
types: UTC_TYPES,
|
|
338
|
+
};
|
|
339
|
+
}
|
|
340
|
+
async connect() {
|
|
341
|
+
// A reconnect replaces the pool; the dead one still holds its sockets and timers.
|
|
342
|
+
const previous = this.Pool;
|
|
343
|
+
this.Pool = null;
|
|
344
|
+
await previous?.end().catch(() => undefined);
|
|
345
|
+
this.Pool = new pg.Pool(this.poolConfig());
|
|
298
346
|
// An idle client's connection can die between checkouts; without a listener pg emits
|
|
299
347
|
// 'error' on the pool and an unhandled 'error' event kills the process.
|
|
300
348
|
this.Pool.on('error', (err) => {
|
|
301
|
-
this.Log?.warn(
|
|
349
|
+
this.Log?.warn({ error: err, connection: this.Options.Name }, 'postgres pool connection error for ${connection}');
|
|
302
350
|
});
|
|
303
|
-
//
|
|
304
|
-
//
|
|
351
|
+
// search_path is a session setting, so it is set on each connection as the pool opens it; the
|
|
352
|
+
// listener is in place before the probe below, so no connection misses it.
|
|
305
353
|
const schema = this.Options.Options?.Schema;
|
|
306
|
-
const session = [`SET TIME ZONE 'UTC'`, ...(schema ? [`SET search_path TO ${pgEscapeIdentifier(schema)}`] : [])].join('; ');
|
|
307
354
|
this.Pool.on('connect', (c) => {
|
|
308
355
|
// The pool listens for errors only while a client is idle. A checked-out client whose
|
|
309
356
|
// socket dies emits 'error' too, and unhandled that kills the process; the statement in
|
|
310
357
|
// flight already rejects with the same error.
|
|
311
358
|
c.on('error', () => undefined);
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
359
|
+
if (schema) {
|
|
360
|
+
c.query(`SET search_path TO ${pgEscapeIdentifier(schema)}`).catch((err) => {
|
|
361
|
+
this.Log?.warn({ error: err, schema, connection: this.Options.Name }, 'could not set search_path to ${schema} for ${connection}');
|
|
362
|
+
});
|
|
363
|
+
}
|
|
315
364
|
});
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
365
|
+
try {
|
|
366
|
+
const client = await this.Pool.connect();
|
|
367
|
+
client.release();
|
|
368
|
+
this.setState(ConnectionState.Connected);
|
|
369
|
+
return this;
|
|
370
|
+
}
|
|
371
|
+
catch (err) {
|
|
372
|
+
await this.Pool.end().catch(() => undefined);
|
|
373
|
+
this.Pool = null;
|
|
374
|
+
throw err;
|
|
375
|
+
}
|
|
322
376
|
}
|
|
323
377
|
async disconnect() {
|
|
324
378
|
this.stopHealthCheck();
|
|
@@ -329,6 +383,10 @@ let PostgresOrmDriver = class PostgresOrmDriver extends SqlDriver {
|
|
|
329
383
|
}
|
|
330
384
|
return this;
|
|
331
385
|
}
|
|
386
|
+
async lockTableShared(table) {
|
|
387
|
+
this.assertInTransaction('lockTableShared');
|
|
388
|
+
await this.schema().raw(`LOCK TABLE ${this.Container.resolve(IdentifierQuoter).quoteQualified(table)} IN SHARE MODE`);
|
|
389
|
+
}
|
|
332
390
|
async tableInfo(name, schema) {
|
|
333
391
|
// Callers written against mysql semantics (orm's model bootstrap among them) pass
|
|
334
392
|
// `Options.Database` here, where database and schema are the same word. In postgres they are
|