@spinajs/orm-postgres 2.0.557 → 3.0.1

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.
Files changed (52) hide show
  1. package/README.md +20 -20
  2. package/lib/cjs/compilers.d.ts +5 -5
  3. package/lib/cjs/compilers.d.ts.map +1 -1
  4. package/lib/cjs/compilers.js +23 -17
  5. package/lib/cjs/compilers.js.map +1 -1
  6. package/lib/cjs/converters.d.ts +7 -7
  7. package/lib/cjs/converters.d.ts.map +1 -1
  8. package/lib/cjs/converters.js +18 -40
  9. package/lib/cjs/converters.js.map +1 -1
  10. package/lib/cjs/errors.d.ts +4 -0
  11. package/lib/cjs/errors.d.ts.map +1 -0
  12. package/lib/cjs/errors.js +31 -0
  13. package/lib/cjs/errors.js.map +1 -0
  14. package/lib/cjs/expressions.d.ts +9 -0
  15. package/lib/cjs/expressions.d.ts.map +1 -0
  16. package/lib/cjs/expressions.js +22 -0
  17. package/lib/cjs/expressions.js.map +1 -0
  18. package/lib/cjs/index.d.ts +12 -3
  19. package/lib/cjs/index.d.ts.map +1 -1
  20. package/lib/cjs/index.js +95 -35
  21. package/lib/cjs/index.js.map +1 -1
  22. package/lib/cjs/statements.d.ts +19 -6
  23. package/lib/cjs/statements.d.ts.map +1 -1
  24. package/lib/cjs/statements.js +37 -8
  25. package/lib/cjs/statements.js.map +1 -1
  26. package/lib/mjs/compilers.d.ts +5 -5
  27. package/lib/mjs/compilers.d.ts.map +1 -1
  28. package/lib/mjs/compilers.js +23 -17
  29. package/lib/mjs/compilers.js.map +1 -1
  30. package/lib/mjs/converters.d.ts +7 -7
  31. package/lib/mjs/converters.d.ts.map +1 -1
  32. package/lib/mjs/converters.js +19 -41
  33. package/lib/mjs/converters.js.map +1 -1
  34. package/lib/mjs/errors.d.ts +4 -0
  35. package/lib/mjs/errors.d.ts.map +1 -0
  36. package/lib/mjs/errors.js +28 -0
  37. package/lib/mjs/errors.js.map +1 -0
  38. package/lib/mjs/expressions.d.ts +9 -0
  39. package/lib/mjs/expressions.d.ts.map +1 -0
  40. package/lib/mjs/expressions.js +18 -0
  41. package/lib/mjs/expressions.js.map +1 -0
  42. package/lib/mjs/index.d.ts +12 -3
  43. package/lib/mjs/index.d.ts.map +1 -1
  44. package/lib/mjs/index.js +97 -39
  45. package/lib/mjs/index.js.map +1 -1
  46. package/lib/mjs/statements.d.ts +19 -6
  47. package/lib/mjs/statements.d.ts.map +1 -1
  48. package/lib/mjs/statements.js +37 -9
  49. package/lib/mjs/statements.js.map +1 -1
  50. package/lib/tsconfig.cjs.tsbuildinfo +1 -1
  51. package/lib/tsconfig.mjs.tsbuildinfo +1 -1
  52. package/package.json +13 -10
@@ -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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"}
@@ -1,13 +1,13 @@
1
- import { DatetimeValueConverter, IColumnDescriptor, IDehydrateOptions, JsonValueConverter, ModelBase } from '@spinajs/orm';
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
- * Instants go to the server as UTC ISO strings and come back as UTC DateTimes, so neither the
5
- * process zone nor the session TimeZone moves a stored instant. `dehydrate()` (API output) keeps
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 DatetimeValueConverter {
9
- toDB(value: Date | DateTime | string, _model: ModelBase<unknown>, column: IColumnDescriptor, _options?: any, dehydrateOptions?: IDehydrateOptions): string | number | null | undefined;
10
- fromDB(value: string | DateTime | Date | number): any;
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,sBAAsB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC3H,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAIjC;;;;GAIG;AACH,qBAAa,8BAA+B,SAAQ,sBAAsB;IACjE,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,QAAQ,GAAG,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,gBAAgB,CAAC,EAAE,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAiC5L;IAEM,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM,GAAG,GAAG,CAiB3D;CACF;AAED,4HAA4H;AAC5H,qBAAa,0BAA2B,SAAQ,kBAAkB;IACzD,MAAM,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG,CAS7B;CACF"}
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"}
@@ -1,58 +1,36 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { DatetimeValueConverter, JsonValueConverter } from '@spinajs/orm';
2
+ import { JsonValueConverter, toInstant } from '@spinajs/orm';
3
+ import { IsoDatetimeValueConverter } from '@spinajs/orm-sql';
3
4
  import { DateTime } from 'luxon';
4
- const NUMERIC_TYPES = ['int', 'integer', 'float', 'double', 'decimal', 'bigint', 'smallint', 'tinyint', 'mediumint', 'int2', 'int4', 'int8', 'numeric', 'float4', 'float8'];
5
+ const PG_NUMERIC_TYPES = ['int2', 'int4', 'int8', 'numeric', 'float4', 'float8'];
5
6
  /**
6
- * Instants go to the server as UTC ISO strings and come back as UTC DateTimes, so neither the
7
- * process zone nor the session TimeZone moves a stored instant. `dehydrate()` (API output) keeps
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 DatetimeValueConverter {
11
- toDB(value, _model, column, _options, dehydrateOptions) {
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 === null || value === undefined) {
14
- return value;
13
+ if (value === undefined) {
14
+ return undefined;
15
15
  }
16
- const dt = typeof value === 'string' ? DateTime.fromISO(value, { setZone: true }) : DateTime.isDateTime(value) ? value : DateTime.fromJSDate(value);
17
- if (dehydrateOptions) {
18
- switch (dehydrateOptions.dateTimeFormat) {
19
- case 'iso':
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
- if (column && NUMERIC_TYPES.includes(column.Type)) {
28
- return dt.toUnixInteger();
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 dt.toUTC().toISO();
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
- if (value instanceof Date) {
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":"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"}
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"}
@@ -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
- * pg-types reads `date` and `timestamp` (no zone) as LOCAL time. This driver writes UTC, so
25
- * both are read as UTC: a legacy TIMESTAMP column holds UTC wall time, and a DATE becomes UTC
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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
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, OrmException, ServerResponseMapper, ConnectionState, IdentifierQuoter, OnDuplicateQueryCompiler, ColumnQueryCompiler, AlterColumnQueryCompiler, AlterTableQueryCompiler, RawQuery, LimitQueryCompiler, TruncateTableQueryCompiler, RecursiveQueryCompiler, DefaultValueBuilder, InsertQueryCompiler, CreateDatabaseCompiler, DropDatabaseCompiler, TableAliasCompiler, CreateViewCompiler, LiteralQuoter, EventQueryCompiler, DropEventQueryCompiler, JoinStatement, JsonValueConverter, DatetimeValueConverter } from '@spinajs/orm';
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, PostgresAlterTableQueryCompiler, PostgresLimitQueryCompiler, PostgresOnDuplicateQueryCompiler, PostgresInsertQueryCompiler, PostgresColumnQueryCompiler, PostgresAlterColumnQueryCompiler, PostgresCreateDatabaseQueryCompiler, PostgresDefaultValueBuilder, PostgresTableAliasCompiler, PostgresCreateViewCompiler } from './compilers.js';
13
- import { DoubleQuoteIdentifierQuoter, pgEscapeIdentifier, PostgresJoinStatement, PostgresLiteralQuoter } from './statements.js';
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(/\?/g, (match) => (i < count ? `$${++i}` : match));
50
+ return stmt.replace(/'(?:[^']|'')*'|"(?:[^"]|"")*"|\?&|\?\|(?!\|)|\?/g, (match) => (match === '?' && i < count ? `$${++i}` : match));
43
51
  }
44
- const DATE_OID = 1082;
45
- const TIMESTAMP_WITHOUT_TIME_ZONE_OID = 1114;
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
- * pg-types reads `date` and `timestamp` (no zone) as LOCAL time. This driver writes UTC, so
48
- * both are read as UTC: a legacy TIMESTAMP column holds UTC wall time, and a DATE becomes UTC
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
- const parse = pg.types.getTypeParser(oid, format);
53
- if (format === 'binary' || (oid !== DATE_OID && oid !== TIMESTAMP_WITHOUT_TIME_ZONE_OID)) {
54
- return parse;
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 (value) => (/^-?infinity$/.test(value) || / BC$/.test(value) ? parse(value) : new Date(`${value.replace(' ', 'T')}${oid === DATE_OID ? 'T00:00:00' : ''}Z`));
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
- return this.withReconnect(() => this._executeOnDbOnce(stmt, params, context));
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 new OrmException(`Error executing orm command `, {
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, err);
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
- async connect() {
322
+ poolConfig() {
283
323
  const pool = this.resolvedPoolOptions();
284
- // withReconnect() calls connect() again on a live driver; the old pool's sockets died with the server
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
- types: { getTypeParser: utcTypeParser },
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(`postgres pool connection error for ${this.Options.Name}: ${err.message}`);
349
+ this.Log?.warn({ error: err, connection: this.Options.Name }, 'postgres pool connection error for ${connection}');
302
350
  });
303
- // Session settings are per connection, so they are applied as the pool opens each one.
304
- // UTC so now()::text, date_trunc() and casts to date agree with the stored instants.
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
- c.query(session).catch((err) => {
313
- this.Log?.warn(`session setup failed for ${this.Options.Name}: ${err.message}`);
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
- void previous?.end().catch(() => undefined);
317
- // On failure the new pool stays: a retry must find a pool to connect through, not null.
318
- const client = await this.Pool.connect();
319
- client.release();
320
- this.setState(ConnectionState.Connected);
321
- return this;
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