@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.
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
package/lib/cjs/index.js CHANGED
@@ -26,18 +26,24 @@ Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.PostgresOrmDriver = exports.PostgresServerResponseMapper = void 0;
27
27
  exports.toPositionalParameters = toPositionalParameters;
28
28
  exports.toDriverStatement = toDriverStatement;
29
+ exports.parseUtcTimestamp = parseUtcTimestamp;
30
+ exports.parseUtcDate = parseUtcDate;
29
31
  exports.utcTypeParser = utcTypeParser;
30
32
  exports.parseColumnDefault = parseColumnDefault;
31
33
  /* eslint-disable @typescript-eslint/no-explicit-any */
34
+ const expressions_js_1 = require("./expressions.js");
32
35
  const di_1 = require("@spinajs/di");
33
36
  const orm_1 = require("@spinajs/orm");
34
37
  const orm_sql_1 = require("@spinajs/orm-sql");
35
38
  const pg_1 = __importDefault(require("pg"));
36
39
  const compilers_js_1 = require("./compilers.js");
37
40
  const statements_js_1 = require("./statements.js");
41
+ const errors_js_1 = require("./errors.js");
38
42
  const converters_js_1 = require("./converters.js");
39
43
  __exportStar(require("./compilers.js"), exports);
44
+ __exportStar(require("./expressions.js"), exports);
40
45
  __exportStar(require("./statements.js"), exports);
46
+ __exportStar(require("./errors.js"), exports);
41
47
  __exportStar(require("./converters.js"), exports);
42
48
  /**
43
49
  * SQLSTATE classes that mean the transport died rather than the statement being wrong.
@@ -62,23 +68,45 @@ function toPositionalParameters(stmt) {
62
68
  */
63
69
  function toDriverStatement(stmt, params) {
64
70
  const count = params?.length ?? 0;
71
+ if (count === 0) {
72
+ return stmt;
73
+ }
74
+ // Quoted literals / identifiers and the jsonb operators `?|` `?&` are text, not placeholders.
65
75
  let i = 0;
66
- return stmt.replace(/\?/g, (match) => (i < count ? `$${++i}` : match));
76
+ return stmt.replace(/'(?:[^']|'')*'|"(?:[^"]|"")*"|\?&|\?\|(?!\|)|\?/g, (match) => (match === '?' && i < count ? `$${++i}` : match));
67
77
  }
68
- const DATE_OID = 1082;
69
- const TIMESTAMP_WITHOUT_TIME_ZONE_OID = 1114;
78
+ const defaultParser = pg_1.default.types.getTypeParser;
79
+ const parseTimestamptz = defaultParser(pg_1.default.types.builtins.TIMESTAMPTZ, 'text');
80
+ const parseDate = defaultParser(pg_1.default.types.builtins.DATE, 'text');
70
81
  /**
71
- * pg-types reads `date` and `timestamp` (no zone) as LOCAL time. This driver writes UTC, so
72
- * both are read as UTC: a legacy TIMESTAMP column holds UTC wall time, and a DATE becomes UTC
73
- * midnight of its calendar day. `timestamptz` keeps the default parser: its text carries the offset.
82
+ * Parses `timestamp` (without time zone) as UTC: the datetime converter writes UTC into such a
83
+ * column, and pg's own parser reads it in the process zone.
74
84
  */
85
+ function parseUtcTimestamp(value) {
86
+ if (value === 'infinity' || value === '-infinity') {
87
+ return parseTimestamptz(value);
88
+ }
89
+ return value.endsWith(' BC') ? parseTimestamptz(`${value.slice(0, -3)}+00 BC`) : parseTimestamptz(`${value}+00`);
90
+ }
91
+ /** 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. */
92
+ function parseUtcDate(value) {
93
+ if (value === 'infinity' || value === '-infinity') {
94
+ return parseDate(value);
95
+ }
96
+ return value.endsWith(' BC') ? parseUtcTimestamp(`${value.slice(0, -3)} 00:00:00 BC`) : parseUtcTimestamp(`${value} 00:00:00`);
97
+ }
98
+ /** The pool's type parsers: `timestamp` and `date` as UTC, the rest as pg reads them ( `timestamptz` text carries its offset ). */
75
99
  function utcTypeParser(oid, format) {
76
- const parse = pg_1.default.types.getTypeParser(oid, format);
77
- if (format === 'binary' || (oid !== DATE_OID && oid !== TIMESTAMP_WITHOUT_TIME_ZONE_OID)) {
78
- return parse;
100
+ if (format !== 'binary' && oid === pg_1.default.types.builtins.TIMESTAMP) {
101
+ return parseUtcTimestamp;
102
+ }
103
+ if (format !== 'binary' && oid === pg_1.default.types.builtins.DATE) {
104
+ return parseUtcDate;
79
105
  }
80
- return (value) => (/^-?infinity$/.test(value) || / BC$/.test(value) ? parse(value) : new Date(`${value.replace(' ', 'T')}${oid === DATE_OID ? 'T00:00:00' : ''}Z`));
106
+ return defaultParser(oid, format);
81
107
  }
108
+ // Per pool, not the global pg.types: that registry is shared with every other pg user in the process.
109
+ const UTC_TYPES = { getTypeParser: utcTypeParser };
82
110
  const QUOTED_LITERAL_DEFAULT = /^'((?:[^']|'')*)'::[a-z0-9_ ."]+$/i;
83
111
  const NUMERIC_LITERAL_DEFAULT = /^\(?-?\d+(\.\d+)?\)?$/;
84
112
  /**
@@ -143,6 +171,8 @@ let PostgresOrmDriver = class PostgresOrmDriver extends orm_sql_1.SqlDriver {
143
171
  * READ COMMITTED, which is the standard-permitted upgrade, so it is not refused here.
144
172
  */
145
173
  this.SupportedIsolationLevels = ['READ UNCOMMITTED', 'READ COMMITTED', 'REPEATABLE READ', 'SERIALIZABLE'];
174
+ /** The wire protocol counts parameters in an Int16. */
175
+ this.MaxBindings = 65535;
146
176
  /**
147
177
  * pg hands NUMERIC/DECIMAL and BIGINT back as STRINGS: both can exceed 2^53, where a
148
178
  * float loses exactly the precision those types exist to keep, so node-postgres refuses
@@ -159,7 +189,8 @@ let PostgresOrmDriver = class PostgresOrmDriver extends orm_sql_1.SqlDriver {
159
189
  executeOnDb(stmt, params, context) {
160
190
  // Reads and writes are both retried: `withReconnect` only re-runs on transport
161
191
  // failures, where the statement provably never reached the server.
162
- return this.withReconnect(() => this._executeOnDbOnce(stmt, params, context));
192
+ const bound = this.toDriverParams(params);
193
+ return this.withReconnect(() => this._executeOnDbOnce(stmt, bound, context));
163
194
  }
164
195
  isRetryableError(err) {
165
196
  // Inside a transaction the connection carried uncommitted state. Reconnecting and
@@ -196,6 +227,10 @@ let PostgresOrmDriver = class PostgresOrmDriver extends orm_sql_1.SqlDriver {
196
227
  else {
197
228
  // Taking the client explicitly, instead of letting `Pool.query` do it out of
198
229
  // sight, is what makes `orm_pool_acquire_seconds` a real number instead of zero.
230
+ if (!this.Pool) {
231
+ // A failed reconnect leaves no pool; 08003 ( connection does not exist ) lets withReconnect retry.
232
+ throw Object.assign(new Error('postgres pool is not connected'), { code: '08003' });
233
+ }
199
234
  const acquireStart = process.hrtime.bigint();
200
235
  const client = await this.Pool.connect();
201
236
  this.observeAcquireSeconds(Number(process.hrtime.bigint() - acquireStart) / 1e9);
@@ -227,11 +262,11 @@ let PostgresOrmDriver = class PostgresOrmDriver extends orm_sql_1.SqlDriver {
227
262
  }
228
263
  }
229
264
  catch (err) {
230
- throw new orm_1.OrmException(`Error executing orm command `, {
265
+ throw (0, errors_js_1.mapPostgresError)(err, {
231
266
  Host: this.Options.Host,
232
267
  User: this.Options.User,
233
268
  Name: this.Options.Name,
234
- }, stmt, params, err);
269
+ }, stmt, params);
235
270
  }
236
271
  }
237
272
  supportedFeatures() {
@@ -244,6 +279,8 @@ let PostgresOrmDriver = class PostgresOrmDriver extends orm_sql_1.SqlDriver {
244
279
  // With RETURNING every key comes back per row; the LAST_INSERT_ID batch walk is
245
280
  // MySQL's workaround for not having it.
246
281
  insertIdIsFirstOfBatch: false,
282
+ concurrentTransactions: true,
283
+ nativeJson: true,
247
284
  };
248
285
  }
249
286
  resolve() {
@@ -257,11 +294,13 @@ let PostgresOrmDriver = class PostgresOrmDriver extends orm_sql_1.SqlDriver {
257
294
  * dialect-specific is inherited by accident.
258
295
  */
259
296
  this.Container.register(statements_js_1.DoubleQuoteIdentifierQuoter).as(orm_1.IdentifierQuoter);
297
+ this.Container.register(statements_js_1.PostgresInStatement).as(orm_1.InStatement);
298
+ this.Container.register(expressions_js_1.PostgresSqlExpressions).as(orm_1.SqlExpressions);
299
+ this.Container.register(compilers_js_1.PostgresIndexQueryCompiler).as(orm_1.IndexQueryCompiler);
260
300
  this.Container.register(compilers_js_1.PostgresOnDuplicateQueryCompiler).as(orm_1.OnDuplicateQueryCompiler);
261
301
  this.Container.register(compilers_js_1.PostgresInsertQueryCompiler).as(orm_1.InsertQueryCompiler);
262
302
  this.Container.register(compilers_js_1.PostgresColumnQueryCompiler).as(orm_1.ColumnQueryCompiler);
263
303
  this.Container.register(compilers_js_1.PostgresAlterColumnQueryCompiler).as(orm_1.AlterColumnQueryCompiler);
264
- this.Container.register(compilers_js_1.PostgresAlterTableQueryCompiler).as(orm_1.AlterTableQueryCompiler);
265
304
  this.Container.register(compilers_js_1.PostgresLimitQueryCompiler).as(orm_1.LimitQueryCompiler);
266
305
  this.Container.register(compilers_js_1.PostgresCreateDatabaseQueryCompiler).as(orm_1.CreateDatabaseCompiler);
267
306
  this.Container.register(compilers_js_1.PostgresDefaultValueBuilder).as(orm_1.DefaultValueBuilder);
@@ -269,9 +308,11 @@ let PostgresOrmDriver = class PostgresOrmDriver extends orm_sql_1.SqlDriver {
269
308
  this.Container.register(compilers_js_1.PostgresTableAliasCompiler).as(orm_1.TableAliasCompiler);
270
309
  this.Container.register(compilers_js_1.PostgresCreateViewCompiler).as(orm_1.CreateViewCompiler);
271
310
  this.Container.register(statements_js_1.PostgresLiteralQuoter).as(orm_1.LiteralQuoter);
272
- this.Container.register(statements_js_1.PostgresJoinStatement).as(orm_1.JoinStatement);
273
- this.Container.register(converters_js_1.PostgresJsonValueConverter).as(orm_1.JsonValueConverter);
274
311
  this.Container.register(converters_js_1.PostgresDatetimeValueConverter).as(orm_1.DatetimeValueConverter);
312
+ this.Container.register(converters_js_1.PostgresJsonValueConverter).as(orm_1.JsonValueConverter);
313
+ this.Container.register(statements_js_1.PostgresNowExpression).as(orm_1.NowExpression);
314
+ this.Container.register(statements_js_1.PostgresJoinStatement).as(orm_1.JoinStatement);
315
+ this.Container.register(statements_js_1.PostgresDateTimeWrapper).as(orm_1.DateTimeWrapper);
275
316
  // Shared implementations that happen to be valid postgres, claimed explicitly.
276
317
  // DROP DATABASE IF EXISTS is among them: with this driver's quoter injected the
277
318
  // shared compiler already emits exactly the postgres statement.
@@ -281,6 +322,7 @@ let PostgresOrmDriver = class PostgresOrmDriver extends orm_sql_1.SqlDriver {
281
322
  this.Container.register(orm_sql_1.SqlDropDatabaseQueryCompiler).as(orm_1.DropDatabaseCompiler);
282
323
  this.Container.register(orm_sql_1.SqlTruncateTableQueryCompiler).as(orm_1.TruncateTableQueryCompiler);
283
324
  this.Container.register(orm_sql_1.SqlWithRecursiveCompiler).as(orm_1.RecursiveQueryCompiler);
325
+ this.Container.register(orm_sql_1.SqlAlterTableQueryCompiler).as(orm_1.AlterTableQueryCompiler);
284
326
  // No native scheduler in this engine, and nothing is simulated in its place.
285
327
  this.Container.register(orm_sql_1.UnsupportedEventQueryCompiler).as(orm_1.EventQueryCompiler);
286
328
  this.Container.register(orm_sql_1.UnsupportedDropEventQueryCompiler).as(orm_1.DropEventQueryCompiler);
@@ -304,11 +346,9 @@ let PostgresOrmDriver = class PostgresOrmDriver extends orm_sql_1.SqlDriver {
304
346
  return false;
305
347
  }
306
348
  }
307
- async connect() {
349
+ poolConfig() {
308
350
  const pool = this.resolvedPoolOptions();
309
- // withReconnect() calls connect() again on a live driver; the old pool's sockets died with the server
310
- const previous = this.Pool;
311
- this.Pool = new pg_1.default.Pool({
351
+ return {
312
352
  host: this.Options.Host,
313
353
  user: this.Options.User,
314
354
  password: this.Options.Password,
@@ -318,32 +358,48 @@ let PostgresOrmDriver = class PostgresOrmDriver extends orm_sql_1.SqlDriver {
318
358
  min: pool.Min,
319
359
  idleTimeoutMillis: pool.IdleTimeout,
320
360
  connectionTimeoutMillis: pool.AcquireTimeout,
321
- types: { getTypeParser: utcTypeParser },
322
- });
361
+ // now(), date_trunc() and the text of a timestamptz follow the session zone. pg reads PGOPTIONS only
362
+ // when no options are given, so it is kept here.
363
+ options: `${process.env.PGOPTIONS ?? ''} -c TimeZone=UTC`.trim(),
364
+ types: UTC_TYPES,
365
+ };
366
+ }
367
+ async connect() {
368
+ // A reconnect replaces the pool; the dead one still holds its sockets and timers.
369
+ const previous = this.Pool;
370
+ this.Pool = null;
371
+ await previous?.end().catch(() => undefined);
372
+ this.Pool = new pg_1.default.Pool(this.poolConfig());
323
373
  // An idle client's connection can die between checkouts; without a listener pg emits
324
374
  // 'error' on the pool and an unhandled 'error' event kills the process.
325
375
  this.Pool.on('error', (err) => {
326
- this.Log?.warn(`postgres pool connection error for ${this.Options.Name}: ${err.message}`);
376
+ this.Log?.warn({ error: err, connection: this.Options.Name }, 'postgres pool connection error for ${connection}');
327
377
  });
328
- // Session settings are per connection, so they are applied as the pool opens each one.
329
- // UTC so now()::text, date_trunc() and casts to date agree with the stored instants.
378
+ // search_path is a session setting, so it is set on each connection as the pool opens it; the
379
+ // listener is in place before the probe below, so no connection misses it.
330
380
  const schema = this.Options.Options?.Schema;
331
- const session = [`SET TIME ZONE 'UTC'`, ...(schema ? [`SET search_path TO ${(0, statements_js_1.pgEscapeIdentifier)(schema)}`] : [])].join('; ');
332
381
  this.Pool.on('connect', (c) => {
333
382
  // The pool listens for errors only while a client is idle. A checked-out client whose
334
383
  // socket dies emits 'error' too, and unhandled that kills the process; the statement in
335
384
  // flight already rejects with the same error.
336
385
  c.on('error', () => undefined);
337
- c.query(session).catch((err) => {
338
- this.Log?.warn(`session setup failed for ${this.Options.Name}: ${err.message}`);
339
- });
386
+ if (schema) {
387
+ c.query(`SET search_path TO ${(0, statements_js_1.pgEscapeIdentifier)(schema)}`).catch((err) => {
388
+ this.Log?.warn({ error: err, schema, connection: this.Options.Name }, 'could not set search_path to ${schema} for ${connection}');
389
+ });
390
+ }
340
391
  });
341
- void previous?.end().catch(() => undefined);
342
- // On failure the new pool stays: a retry must find a pool to connect through, not null.
343
- const client = await this.Pool.connect();
344
- client.release();
345
- this.setState(orm_1.ConnectionState.Connected);
346
- return this;
392
+ try {
393
+ const client = await this.Pool.connect();
394
+ client.release();
395
+ this.setState(orm_1.ConnectionState.Connected);
396
+ return this;
397
+ }
398
+ catch (err) {
399
+ await this.Pool.end().catch(() => undefined);
400
+ this.Pool = null;
401
+ throw err;
402
+ }
347
403
  }
348
404
  async disconnect() {
349
405
  this.stopHealthCheck();
@@ -354,6 +410,10 @@ let PostgresOrmDriver = class PostgresOrmDriver extends orm_sql_1.SqlDriver {
354
410
  }
355
411
  return this;
356
412
  }
413
+ async lockTableShared(table) {
414
+ this.assertInTransaction('lockTableShared');
415
+ await this.schema().raw(`LOCK TABLE ${this.Container.resolve(orm_1.IdentifierQuoter).quoteQualified(table)} IN SHARE MODE`);
416
+ }
357
417
  async tableInfo(name, schema) {
358
418
  // Callers written against mysql semantics (orm's model bootstrap among them) pass
359
419
  // `Options.Database` here, where database and schema are the same word. In postgres they are
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uDAAuD;AACvD,qDAA0D;AAC1D,oCAAsD;AACtD,sCAA8uB;AAC9uB,8CAAkO;AAClO,4CAAoB;AACpB,iDAA6W;AAC7W,mDAAqM;AACrM,2CAA+C;AAE/C,mDAA6F;AAE7F,iDAA+B;AAC/B,mDAAiC;AACjC,kDAAgC;AAChC,8CAA4B;AAC5B,kDAAgC;AAMhC;;;;GAIG;AACH,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAEtH;;;;GAIG;AACH,gCAAuC,IAAY;IACjD,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED;;;;;GAKG;AACH,2BAAkC,IAAY,EAAE,MAAkB;IAChE,MAAM,KAAK,GAAG,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC;IAClC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8FAA8F;IAC9F,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,IAAI,CAAC,OAAO,CAAC,kDAAkD,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACvI,CAAC;AAED,MAAM,aAAa,GAAG,YAAE,CAAC,KAAK,CAAC,aAAwF,CAAC;AACxH,MAAM,gBAAgB,GAAG,aAAa,CAAC,YAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AAC9E,MAAM,SAAS,GAAG,aAAa,CAAC,YAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAEhE;;;GAGG;AACH,2BAAkC,KAAa;IAC7C,IAAI,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;QAClD,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC;AACnH,CAAC;AAED,gJAAgJ;AAChJ,sBAA6B,KAAa;IACxC,IAAI,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;QAClD,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,KAAK,WAAW,CAAC,CAAC;AACjI,CAAC;AAED,mIAAmI;AACnI,uBAA8B,GAAW,EAAE,MAAe;IACxD,IAAI,MAAM,KAAK,QAAQ,IAAI,GAAG,KAAK,YAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QAC/D,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,IAAI,MAAM,KAAK,QAAQ,IAAI,GAAG,KAAK,YAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC1D,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,OAAO,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACpC,CAAC;AAED,sGAAsG;AACtG,MAAM,SAAS,GAAG,EAAE,aAAa,EAAE,aAAa,EAAqC,CAAC;AAEtF,MAAM,sBAAsB,GAAG,oCAAoC,CAAC;AACpE,MAAM,uBAAuB,GAAG,uBAAuB,CAAC;AAExD;;;;;GAKG;AACH,4BAAmC,GAA8B,EAAE,OAAe;IAChF,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACpE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAEjL,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,SAAS,CAAC;YACf,KAAK,QAAQ,CAAC;YACd,KAAK,MAAM,CAAC;YACZ,KAAK,MAAM,CAAC;YACZ,KAAK,SAAS;gBACZ,OAAO,IAAI,CAAC;YACd,KAAK,MAAM,CAAC;YACZ,KAAK,MAAM,CAAC;YACZ,KAAK,QAAQ,CAAC;YACd,KAAK,QAAQ;gBACX,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;YACtB,KAAK,MAAM;gBACT,OAAO,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,GAAG,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,OAAO,cAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED,kCAA0C,SAAQ,0BAAoB;IAC7D,IAAI,CAAC,IAAS,EAAE,OAAkB;QACvC,sDAAsD;QACtD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACnE,MAAM,GAAG,GAAG,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAE3E,OAAO;gBACL,YAAY,EAAE,IAAI,CAAC,MAAM;gBACzB,uEAAuE;gBACvE,YAAY,EAAE,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC/C,SAAS,EAAE,IAAI;aAChB,CAAC;QACJ,CAAC;QAED,mFAAmF;QACnF,0FAA0F;QAC1F,OAAO;YACL,YAAY,EAAE,IAAI,EAAE,YAAY,IAAI,CAAC;YACrC,YAAY,EAAE,IAAI,EAAE,YAAY,IAAI,CAAC;YACrC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAE,EAAY;SAC3E,CAAC;IACJ,CAAC;CACF;;AAIM,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,mBAAS;IAAzC;;QAGL;;;WAGG;QACa,6BAAwB,GAAqB,CAAC,kBAAkB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,cAAc,CAAC,CAAC;QAEvI,uDAAuD;QACvC,gBAAW,GAAG,KAAK,CAAC;QAEpC;;;;;WAKG;QACa,wBAAmB,GAAsC;YACvE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC3B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC3B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC1B,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE;SACrD,CAAC;IAiYJ,CAAC;IA/XQ,WAAW,CAAC,IAAY,EAAE,MAAa,EAAE,OAAqB;QACnE,+EAA+E;QAC/E,mEAAmE;QACnE,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/E,CAAC;IAES,gBAAgB,CAAC,GAAY;QACrC,kFAAkF;QAClF,2EAA2E;QAC3E,IAAI,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,EAAE,CAAC;YACvC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,OAAO,GAAQ,GAAG,CAAC;QACvB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,OAAO,OAAO,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YAC5B,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7E,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC;YACzC,KAAK,EAAE,CAAC;QACV,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAES,KAAK,CAAC,gBAAgB,CAAC,IAAY,EAAE,MAAa,EAAE,OAAqB;QACjF,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAEnD,qFAAqF;QACrF,0CAA0C;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAA6C,CAAC;QAEhG,IAAI,CAAC;YACH,IAAI,MAAsB,CAAC;YAE3B,IAAI,SAAS,EAAE,UAAU,EAAE,CAAC;gBAC1B,+EAA+E;gBAC/E,qCAAqC;gBACrC,MAAM,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAChE,CAAC;iBAAM,CAAC;gBACN,6EAA6E;gBAC7E,iFAAiF;gBACjF,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;oBACf,mGAAmG;oBACnG,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,gCAAgC,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;gBACtF,CAAC;gBAED,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC7C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACzC,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,YAAY,CAAC,GAAG,GAAG,CAAC,CAAC;gBAEjF,IAAI,CAAC;oBACH,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;gBAClD,CAAC;wBAAS,CAAC;oBACT,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,CAAC;YACH,CAAC;YAED,QAAQ,OAAO,EAAE,CAAC;gBAChB,KAAK,kBAAY,CAAC,MAAM,CAAC;gBACzB,KAAK,kBAAY,CAAC,MAAM;oBACtB,OAAO;wBACL,YAAY,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC;qBACnC,CAAC;gBACJ,KAAK,kBAAY,CAAC,MAAM,CAAC;gBACzB,KAAK,kBAAY,CAAC,MAAM,CAAC;gBACzB,KAAK,kBAAY,CAAC,eAAe;oBAC/B,+EAA+E;oBAC/E,qEAAqE;oBACrE,OAAO;wBACL,YAAY,EAAE,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM;wBACnD,YAAY,EAAE,CAAC;wBACf,SAAS,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;qBAC7B,CAAC;gBACJ;oBACE,OAAO,MAAM,CAAC,IAAI,CAAC;YACvB,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAA,4BAAgB,EACpB,GAAG,EACH;gBACE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;gBACvB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;gBACvB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;aACxB,EACD,IAAI,EACJ,MAAM,CACP,CAAC;QACJ,CAAC;IACH,CAAC;IAEM,iBAAiB;QACtB,OAAO;YACL,2EAA2E;YAC3E,+EAA+E;YAC/E,kBAAkB;YAClB,MAAM,EAAE,KAAK;YACb,eAAe,EAAE,IAAI;YACrB,gFAAgF;YAChF,wCAAwC;YACxC,sBAAsB,EAAE,KAAK;YAC7B,sBAAsB,EAAE,IAAI;YAC5B,UAAU,EAAE,IAAI;SACjB,CAAC;IACJ,CAAC;IAEM,OAAO;QACZ,KAAK,CAAC,OAAO,EAAE,CAAC;QAEhB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,0CAA2B,CAAC,CAAC,EAAE,CAAC,yBAAmB,CAAC,CAAC;QAC7E,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAC,EAAE,CAAC,0BAAoB,CAAC,CAAC;QAE/E;;;;;WAKG;QACH,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,2CAA2B,CAAC,CAAC,EAAE,CAAC,sBAAgB,CAAC,CAAC;QAC1E,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,mCAAmB,CAAC,CAAC,EAAE,CAAC,iBAAW,CAAC,CAAC;QAC7D,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,uCAAsB,CAAC,CAAC,EAAE,CAAC,oBAAc,CAAC,CAAC;QACnE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,yCAA0B,CAAC,CAAC,EAAE,CAAC,wBAAkB,CAAC,CAAC;QAC3E,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,+CAAgC,CAAC,CAAC,EAAE,CAAC,8BAAwB,CAAC,CAAC;QACvF,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,0CAA2B,CAAC,CAAC,EAAE,CAAC,yBAAmB,CAAC,CAAC;QAC7E,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,0CAA2B,CAAC,CAAC,EAAE,CAAC,yBAAmB,CAAC,CAAC;QAC7E,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,+CAAgC,CAAC,CAAC,EAAE,CAAC,8BAAwB,CAAC,CAAC;QACvF,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,yCAA0B,CAAC,CAAC,EAAE,CAAC,wBAAkB,CAAC,CAAC;QAC3E,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,kDAAmC,CAAC,CAAC,EAAE,CAAC,4BAAsB,CAAC,CAAC;QACxF,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,0CAA2B,CAAC,CAAC,EAAE,CAAC,yBAAmB,CAAC,CAAC;QAC7E,0FAA0F;QAC1F,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,yCAA0B,CAAC,CAAC,EAAE,CAAC,wBAAkB,CAAC,CAAC;QAC3E,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,yCAA0B,CAAC,CAAC,EAAE,CAAC,wBAAkB,CAAC,CAAC;QAC3E,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,qCAAqB,CAAC,CAAC,EAAE,CAAC,mBAAa,CAAC,CAAC;QACjE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,8CAA8B,CAAC,CAAC,EAAE,CAAC,4BAAsB,CAAC,CAAC;QACnF,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,0CAA0B,CAAC,CAAC,EAAE,CAAC,wBAAkB,CAAC,CAAC;QAC3E,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,qCAAqB,CAAC,CAAC,EAAE,CAAC,mBAAa,CAAC,CAAC;QACjE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,qCAAqB,CAAC,CAAC,EAAE,CAAC,mBAAa,CAAC,CAAC;QACjE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,uCAAuB,CAAC,CAAC,EAAE,CAAC,qBAAe,CAAC,CAAC;QAErE,+EAA+E;QAC/E,gFAAgF;QAChF,gEAAgE;QAChE,oEAAoE;QACpE,gFAAgF;QAChF,uEAAuE;QACvE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,sCAA4B,CAAC,CAAC,EAAE,CAAC,0BAAoB,CAAC,CAAC;QAC/E,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,uCAA6B,CAAC,CAAC,EAAE,CAAC,gCAA0B,CAAC,CAAC;QACtF,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,kCAAwB,CAAC,CAAC,EAAE,CAAC,4BAAsB,CAAC,CAAC;QAC7E,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,oCAA0B,CAAC,CAAC,EAAE,CAAC,6BAAuB,CAAC,CAAC;QAEhF,6EAA6E;QAC7E,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,uCAA6B,CAAC,CAAC,EAAE,CAAC,wBAAkB,CAAC,CAAC;QAC9E,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,2CAAiC,CAAC,CAAC,EAAE,CAAC,4BAAsB,CAAC,CAAC;IACxF,CAAC;IAED,mFAAmF;IAC5E,WAAW;QAChB,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,IAAI,CAAC;YAChC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;YAC9E,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,YAAY,IAAI,CAAC;SACtC,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,IAAI;QACf,IAAI,CAAC;YACH,oFAAoF;YACpF,uEAAuE;YACvE,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,EAAE,EAAE,kBAAY,CAAC,MAAM,CAAC,CAAC;YACjE,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAES,UAAU;QAClB,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAExC,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;YACvB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;YACvB,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;YAC/B,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;YACvB,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;YAC/B,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,iBAAiB,EAAE,IAAI,CAAC,WAAW;YACnC,uBAAuB,EAAE,IAAI,CAAC,cAAc;YAC5C,qGAAqG;YACrG,iDAAiD;YACjD,OAAO,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,kBAAkB,CAAC,IAAI,EAAE;YAChE,KAAK,EAAE,SAAS;SACjB,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,OAAO;QAClB,kFAAkF;QAClF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAW,CAAC;QACxB,MAAM,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAE7C,IAAI,CAAC,IAAI,GAAG,IAAI,YAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAE3C,qFAAqF;QACrF,wEAAwE;QACxE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YAC5B,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,kDAAkD,CAAC,CAAC;QACpH,CAAC,CAAC,CAAC;QAEH,8FAA8F;QAC9F,2EAA2E;QAC3E,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAA4B,CAAC;QAClE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;YAC5B,sFAAsF;YACtF,wFAAwF;YACxF,8CAA8C;YAC9C,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAE/B,IAAI,MAAM,EAAE,CAAC;gBACX,CAAC,CAAC,KAAK,CAAC,sBAAsB,IAAA,kCAAkB,EAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;oBAC/E,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,0DAA0D,CAAC,CAAC;gBACpI,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACzC,MAAM,CAAC,OAAO,EAAE,CAAC;YAEjB,IAAI,CAAC,QAAQ,CAAC,qBAAe,CAAC,SAAS,CAAC,CAAC;YACzC,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAC7C,IAAI,CAAC,IAAI,GAAG,IAAW,CAAC;YACxB,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,UAAU;QACrB,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,QAAQ,CAAC,qBAAe,CAAC,YAAY,CAAC,CAAC;QAE5C,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI,GAAG,IAAW,CAAC;QAC1B,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,eAAe,CAAC,KAAa;QACxC,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;QAC5C,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,sBAAgB,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACxH,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,MAAe;QAClD,kFAAkF;QAClF,6FAA6F;QAC7F,yFAAyF;QACzF,4FAA4F;QAC5F,0FAA0F;QAC1F,wDAAwD;QACxD,MAAM,SAAS,GAAG,MAAM,IAAI,MAAM,KAAK,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAClF,MAAM,QAAQ,GAAG,SAAS,IAAK,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAA6B,IAAI,QAAQ,CAAC;QAE/F,oFAAoF;QACpF,iFAAiF;QACjF,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,WAAW,CACrC;;;iCAG2B,EAC3B,CAAC,IAAI,EAAE,QAAQ,CAAC,EAChB,kBAAY,CAAC,MAAM,CACpB,CAAuB,CAAC;QAEzB,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChE,OAAO,IAAW,CAAC;QACrB,CAAC;QAED,MAAM,WAAW,GAAG,CAAC,MAAM,IAAI,CAAC,WAAW,CACzC;;;;uDAIiD,EACjD,CAAC,IAAI,EAAE,QAAQ,CAAC,EAChB,kBAAY,CAAC,MAAM,CACpB,CAAsB,CAAC;QAExB,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAmB,EAAE,EAAE;YACzC,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,KAAK,aAAa,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW,CAAC,KAAK,SAAS,CAAC;YAChI,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,KAAK,QAAQ,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW,CAAC,KAAK,SAAS,CAAC;YAE1H,OAAO;gBACL,iFAAiF;gBACjF,4EAA4E;gBAC5E,IAAI,EAAE,CAAC,CAAC,QAAQ;gBAChB,SAAS,EAAE,CAAC,CAAC;gBACb,OAAO,EAAE,EAAE;gBACX,YAAY,EAAE,kBAAkB,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,QAAQ,CAAC;gBAC9D,UAAU,EAAE,CAAC,CAAC,QAAQ;gBACtB,QAAQ,EAAE,KAAK;gBACf,QAAQ,EAAE,CAAC,CAAC,WAAW,KAAK,KAAK;gBACjC,UAAU,EAAE,SAAS;gBACrB,IAAI,EAAE,KAAK;gBACX,MAAM,EAAE,KAAK;gBACb,YAAY,EAAE,KAAK;gBACnB,OAAO,EAAE,KAAK;gBACd,qBAAqB,EAAE,IAAW;gBAClC,mFAAmF;gBACnF,aAAa,EAAE,CAAC,CAAC,WAAW,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;gBACzF,IAAI,EAAE,CAAC,CAAC,WAAW;gBACnB,SAAS,EAAE,KAAK;gBAChB,SAAS,EAAE,IAAW;gBACtB,MAAM,EAAE,QAAQ;gBAChB,4EAA4E;gBAC5E,sFAAsF;gBACtF,gFAAgF;gBAChF,MAAM,EAAE,QAAQ,IAAI,SAAS;aAC9B,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACK,YAAY,CAAC,GAAwB;QAC3C,OAAQ,GAAmC,CAAC,UAAU,CAAC;IACzD,CAAC;IAES,KAAK,CAAC,MAAM,CAAC,OAA6B;QAClD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAE7C,IAAI,CAAC;YACH,MAAM,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAEhC,IAAI,OAAO,EAAE,SAAS,EAAE,CAAC;gBACvB,+EAA+E;gBAC/E,2DAA2D;gBAC3D,MAAM,UAAU,CAAC,KAAK,CAAC,mCAAmC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;YACjF,CAAC;YAED,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAClC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,UAAU,CAAC,OAAO,EAAE,CAAC;YACrB,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAES,KAAK,CAAC,OAAO,CAAC,GAAwB;QAC9C,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAES,KAAK,CAAC,SAAS,CAAC,GAAwB;QAChD,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;IAED,wFAAwF;IACxF,mDAAmD;IACzC,KAAK,CAAC,UAAU,CAAC,GAAwB,EAAE,IAAY;QAC/D,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,aAAa,IAAA,kCAAkB,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;IAES,KAAK,CAAC,iBAAiB,CAAC,GAAwB,EAAE,IAAY;QACtE,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,qBAAqB,IAAA,kCAAkB,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtF,CAAC;IAES,KAAK,CAAC,oBAAoB,CAAC,GAAwB,EAAE,IAAY;QACzE,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,yBAAyB,IAAA,kCAAkB,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1F,CAAC;IAES,QAAQ,CAAC,GAAwB;QACzC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;QACjC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;CACF,CAAA;;4BAxZY,iBAAiB;IAF7B,IAAA,eAAU,EAAC,qBAAqB,CAAC;IACjC,IAAA,gBAAW,GAAE;GACD,iBAAiB,CAwZ7B"}
@@ -1,6 +1,6 @@
1
1
  import { IContainer } from '@spinajs/di';
2
- import { IdentifierQuoter } from '@spinajs/orm';
3
- import { SqlJoinStatement, SqlLiteralQuoter } from '@spinajs/orm-sql';
2
+ import { IdentifierQuoter, NowExpression, OrmDriver } from '@spinajs/orm';
3
+ import { SqlDateTimeWrapper, SqlInStatement, SqlJoinStatement, SqlLiteralQuoter } from '@spinajs/orm-sql';
4
4
  /**
5
5
  * PostgreSQL quotes identifiers with the ANSI double quote and escapes an embedded `"` by
6
6
  * doubling it. The shared `orm-sql` helper emits backticks, which PostgreSQL reads as an
@@ -21,12 +21,25 @@ export declare class PostgresLiteralQuoter extends SqlLiteralQuoter {
21
21
  protected quoteString(value: string): string;
22
22
  protected quoteBoolean(value: boolean): string;
23
23
  }
24
+ /** A long list is bound as one array parameter; postgres infers the element type from the column. */
25
+ export declare class PostgresInStatement extends SqlInStatement {
26
+ protected listExpression(column: string): string;
27
+ protected listBinding(values: unknown[]): unknown;
28
+ }
29
+ /** The start of the current transaction, as for a column default. */
30
+ export declare class PostgresNowExpression extends NowExpression {
31
+ sql(): string;
32
+ }
24
33
  /**
25
- * A postgres connection is bound to one database, so a joined table is never qualified with it
26
- * (see PostgresTableAliasCompiler), and unquoted key columns would be folded to lower case.
34
+ * A connection cannot reach another database, so the shared `"<database>"."<table>"`
35
+ * spelling would be read as a schema named like the database. Joined tables are
36
+ * qualified with the configured schema instead, or left bare to follow search_path.
27
37
  */
28
38
  export declare class PostgresJoinStatement extends SqlJoinStatement {
29
- protected tableReference(_database: string | undefined, table: string, alias: string): string;
30
- protected keyColumn(column: string | undefined): string;
39
+ protected tableQualifier(driver: OrmDriver): string | undefined;
40
+ }
41
+ /** PostgreSQL has no `DATETIME()` function; a cast to TIMESTAMP is its spelling. */
42
+ export declare class PostgresDateTimeWrapper extends SqlDateTimeWrapper {
43
+ wrap(): string;
31
44
  }
32
45
  //# sourceMappingURL=statements.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"statements.d.ts","sourceRoot":"","sources":["../../src/statements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAAuB,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGtE;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;;;GAIG;AACH,qBACa,2BAA4B,SAAQ,gBAAgB;IACxD,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjC;CACF;AAED,qBAEa,qBAAsB,SAAQ,gBAAgB;IACzD,YAAY,SAAS,EAAE,UAAU,EAEhC;IAED,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3C;IAED,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE7C;CACF;AAED;;;GAGG;AACH,qBACa,qBAAsB,SAAQ,gBAAgB;IACzD,SAAS,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE5F;IAED,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAEtD;CACF"}
1
+ {"version":3,"file":"statements.d.ts","sourceRoot":"","sources":["../../src/statements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAAuB,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAG1G;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;;;GAIG;AACH,qBACa,2BAA4B,SAAQ,gBAAgB;IACxD,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjC;CACF;AAED,qBAEa,qBAAsB,SAAQ,gBAAgB;IACzD,YAAY,SAAS,EAAE,UAAU,EAEhC;IAED,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3C;IAED,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE7C;CACF;AAED,qGAAqG;AACrG,qBACa,mBAAoB,SAAQ,cAAc;IACrD,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE/C;IAED,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAEhD;CACF;AAED,qEAAqE;AACrE,qBAAa,qBAAsB,SAAQ,aAAa;IAC/C,GAAG,IAAI,MAAM,CAEnB;CACF;AAED;;;;GAIG;AACH,qBACa,qBAAsB,SAAQ,gBAAgB;IACzD,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAE9D;CACF;AAED,oFAAoF;AACpF,qBACa,uBAAwB,SAAQ,kBAAkB;IACtD,IAAI,IAAI,MAAM,CAGpB;CACF"}
@@ -12,7 +12,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
12
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.PostgresJoinStatement = exports.PostgresLiteralQuoter = exports.DoubleQuoteIdentifierQuoter = void 0;
15
+ exports.PostgresDateTimeWrapper = exports.PostgresJoinStatement = exports.PostgresNowExpression = exports.PostgresInStatement = exports.PostgresLiteralQuoter = exports.DoubleQuoteIdentifierQuoter = void 0;
16
16
  exports.pgEscapeIdentifier = pgEscapeIdentifier;
17
17
  const di_1 = require("@spinajs/di");
18
18
  const orm_1 = require("@spinajs/orm");
@@ -58,20 +58,49 @@ exports.PostgresLiteralQuoter = PostgresLiteralQuoter = __decorate([
58
58
  (0, di_1.Inject)(di_1.Container),
59
59
  __metadata("design:paramtypes", [Object])
60
60
  ], PostgresLiteralQuoter);
61
+ /** A long list is bound as one array parameter; postgres infers the element type from the column. */
62
+ let PostgresInStatement = class PostgresInStatement extends orm_sql_1.SqlInStatement {
63
+ listExpression(column) {
64
+ return this._not ? `${column} <> ALL(?)` : `${column} = ANY(?)`;
65
+ }
66
+ listBinding(values) {
67
+ return values;
68
+ }
69
+ };
70
+ exports.PostgresInStatement = PostgresInStatement;
71
+ exports.PostgresInStatement = PostgresInStatement = __decorate([
72
+ (0, di_1.NewInstance)()
73
+ ], PostgresInStatement);
74
+ /** The start of the current transaction, as for a column default. */
75
+ class PostgresNowExpression extends orm_1.NowExpression {
76
+ sql() {
77
+ return 'CURRENT_TIMESTAMP';
78
+ }
79
+ }
80
+ exports.PostgresNowExpression = PostgresNowExpression;
61
81
  /**
62
- * A postgres connection is bound to one database, so a joined table is never qualified with it
63
- * (see PostgresTableAliasCompiler), and unquoted key columns would be folded to lower case.
82
+ * A connection cannot reach another database, so the shared `"<database>"."<table>"`
83
+ * spelling would be read as a schema named like the database. Joined tables are
84
+ * qualified with the configured schema instead, or left bare to follow search_path.
64
85
  */
65
86
  let PostgresJoinStatement = class PostgresJoinStatement extends orm_sql_1.SqlJoinStatement {
66
- tableReference(_database, table, alias) {
67
- return `${this.Quoter.quote(table)} as ${this.Quoter.quote(alias)}`;
68
- }
69
- keyColumn(column) {
70
- return this.Quoter.quote(`${column}`);
87
+ tableQualifier(driver) {
88
+ return driver.Options.Options?.Schema;
71
89
  }
72
90
  };
73
91
  exports.PostgresJoinStatement = PostgresJoinStatement;
74
92
  exports.PostgresJoinStatement = PostgresJoinStatement = __decorate([
75
93
  (0, di_1.NewInstance)()
76
94
  ], PostgresJoinStatement);
95
+ /** PostgreSQL has no `DATETIME()` function; a cast to TIMESTAMP is its spelling. */
96
+ let PostgresDateTimeWrapper = class PostgresDateTimeWrapper extends orm_sql_1.SqlDateTimeWrapper {
97
+ wrap() {
98
+ const column = this._tableAlias ? `${this.Quoter.quote(this._tableAlias)}.${this.Quoter.quote(this._value)}` : this.Quoter.quote(this._value);
99
+ return `CAST(${column} AS TIMESTAMP)`;
100
+ }
101
+ };
102
+ exports.PostgresDateTimeWrapper = PostgresDateTimeWrapper;
103
+ exports.PostgresDateTimeWrapper = PostgresDateTimeWrapper = __decorate([
104
+ (0, di_1.NewInstance)()
105
+ ], PostgresDateTimeWrapper);
77
106
  //# sourceMappingURL=statements.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"statements.js","sourceRoot":"","sources":["../../src/statements.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oCAAyE;AACzE,sCAAgD;AAChD,8CAAsE;AACtE,4CAAoB;AAEpB;;;;;GAKG;AACH,4BAAmC,IAAY;IAC7C,OAAO,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC;AACtD,CAAC;AAED;;;;GAIG;AAEI,IAAM,2BAA2B,GAAjC,MAAM,2BAA4B,SAAQ,sBAAgB;IACxD,KAAK,CAAC,IAAY;QACvB,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;CACF,CAAA;;sCAJY,2BAA2B;IADvC,IAAA,gBAAW,GAAE;GACD,2BAA2B,CAIvC;AAIM,IAAM,qBAAqB,GAA3B,MAAM,qBAAsB,SAAQ,0BAAgB;IACzD,YAAY,SAAqB;QAC/B,KAAK,CAAC,SAAS,CAAC,CAAC;IACnB,CAAC;IAES,WAAW,CAAC,KAAa;QACjC,OAAO,YAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAES,YAAY,CAAC,KAAc;QACnC,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAClC,CAAC;CACF,CAAA;;gCAZY,qBAAqB;IAFjC,IAAA,gBAAW,GAAE;IACb,IAAA,WAAM,EAAC,cAAS,CAAC;;GACL,qBAAqB,CAYjC;AAED;;;GAGG;AAEI,IAAM,qBAAqB,GAA3B,MAAM,qBAAsB,SAAQ,0BAAgB;IAC/C,cAAc,CAAC,SAA6B,EAAE,KAAa,EAAE,KAAa;QAClF,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;IACtE,CAAC;IAES,SAAS,CAAC,MAA0B;QAC5C,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC;IACxC,CAAC;CACF,CAAA;;gCARY,qBAAqB;IADjC,IAAA,gBAAW,GAAE;GACD,qBAAqB,CAQjC"}
1
+ {"version":3,"file":"statements.js","sourceRoot":"","sources":["../../src/statements.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oCAAyE;AACzE,sCAA0E;AAC1E,8CAA0G;AAC1G,4CAAoB;AAEpB;;;;;GAKG;AACH,4BAAmC,IAAY;IAC7C,OAAO,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC;AACtD,CAAC;AAED;;;;GAIG;AAEI,IAAM,2BAA2B,GAAjC,MAAM,2BAA4B,SAAQ,sBAAgB;IACxD,KAAK,CAAC,IAAY;QACvB,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;CACF,CAAA;;sCAJY,2BAA2B;IADvC,IAAA,gBAAW,GAAE;GACD,2BAA2B,CAIvC;AAIM,IAAM,qBAAqB,GAA3B,MAAM,qBAAsB,SAAQ,0BAAgB;IACzD,YAAY,SAAqB;QAC/B,KAAK,CAAC,SAAS,CAAC,CAAC;IACnB,CAAC;IAES,WAAW,CAAC,KAAa;QACjC,OAAO,YAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAES,YAAY,CAAC,KAAc;QACnC,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAClC,CAAC;CACF,CAAA;;gCAZY,qBAAqB;IAFjC,IAAA,gBAAW,GAAE;IACb,IAAA,WAAM,EAAC,cAAS,CAAC;;GACL,qBAAqB,CAYjC;AAED,qGAAqG;AAE9F,IAAM,mBAAmB,GAAzB,MAAM,mBAAoB,SAAQ,wBAAc;IAC3C,cAAc,CAAC,MAAc;QACrC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,WAAW,CAAC;IAClE,CAAC;IAES,WAAW,CAAC,MAAiB;QACrC,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAA;;8BARY,mBAAmB;IAD/B,IAAA,gBAAW,GAAE;GACD,mBAAmB,CAQ/B;AAED,qEAAqE;AACrE,2BAAmC,SAAQ,mBAAa;IAC/C,GAAG;QACR,OAAO,mBAAmB,CAAC;IAC7B,CAAC;CACF;;AAED;;;;GAIG;AAEI,IAAM,qBAAqB,GAA3B,MAAM,qBAAsB,SAAQ,0BAAgB;IAC/C,cAAc,CAAC,MAAiB;QACxC,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAA4B,CAAC;IAC9D,CAAC;CACF,CAAA;;gCAJY,qBAAqB;IADjC,IAAA,gBAAW,GAAE;GACD,qBAAqB,CAIjC;AAED,oFAAoF;AAE7E,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,4BAAkB;IACtD,IAAI;QACT,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAgB,CAAC,CAAC;QAClK,OAAO,QAAQ,MAAM,gBAAgB,CAAC;IACxC,CAAC;CACF,CAAA;;kCALY,uBAAuB;IADnC,IAAA,gBAAW,GAAE;GACD,uBAAuB,CAKnC"}
@@ -1,7 +1,7 @@
1
1
  import { Container, IContainer } from '@spinajs/di';
2
2
  import { Log } from '@spinajs/log';
3
3
  import { ICompilerOutput, OnDuplicateQueryBuilder, InsertQueryBuilder, TableExistsCompiler, TableExistsQueryBuilder, LimitQueryCompiler, LimitBuilder, CreateDatabaseCompiler, CreateDatabaseQueryBuilder, IdentifierQuoter, TableAliasCompiler, CreateViewQueryBuilder } from '@spinajs/orm';
4
- import { SqlInsertQueryCompiler, SqlColumnQueryCompiler, SqlAlterColumnQueryCompiler, SqlAlterTableQueryCompiler, SqlOnDuplicateQueryCompiler, SqlDefaultValueBuilder, SqlCreateViewQueryCompiler } from '@spinajs/orm-sql';
4
+ import { SqlInsertQueryCompiler, SqlColumnQueryCompiler, SqlAlterColumnQueryCompiler, SqlOnDuplicateQueryCompiler, SqlDefaultValueBuilder, SqlCreateViewQueryCompiler, SqlIndexQueryCompiler } from '@spinajs/orm-sql';
5
5
  export declare class PostgresTableExistsCompiler implements TableExistsCompiler {
6
6
  protected builder: TableExistsQueryBuilder;
7
7
  constructor(builder: TableExistsQueryBuilder);
@@ -103,10 +103,6 @@ export declare class PostgresAlterColumnQueryCompiler extends SqlAlterColumnQuer
103
103
  protected _add(definition: string): string | null;
104
104
  protected _modify(_definition: string): string | null;
105
105
  }
106
- /** Postgres folds an unquoted identifier to lower case, so a dropped column is quoted. */
107
- export declare class PostgresAlterTableQueryCompiler extends SqlAlterTableQueryCompiler {
108
- protected droppedColumn(column: string): string;
109
- }
110
106
  /**
111
107
  * Postgres spells database DDL its own way: encoding is `ENCODING`, not CHARACTER SET,
112
108
  * and CREATE DATABASE has no IF NOT EXISTS at all — existence has to be checked by the
@@ -125,6 +121,7 @@ export declare class PostgresCreateDatabaseQueryCompiler extends CreateDatabaseC
125
121
  */
126
122
  export declare class PostgresDefaultValueBuilder<T> extends SqlDefaultValueBuilder<T> {
127
123
  date(): T;
124
+ dateTime(): T;
128
125
  }
129
126
  /**
130
127
  * Table references carry NO database prefix in postgres. The shared `SqlTableAliasCompiler`
@@ -149,4 +146,7 @@ export declare class PostgresCreateViewCompiler extends SqlCreateViewQueryCompil
149
146
  protected _withOptions(): string;
150
147
  protected _checkOption(): string;
151
148
  }
149
+ export declare class PostgresIndexQueryCompiler extends SqlIndexQueryCompiler {
150
+ protected _drop(): string;
151
+ }
152
152
  //# sourceMappingURL=compilers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"compilers.d.ts","sourceRoot":"","sources":["../../src/compilers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compilers.d.ts","sourceRoot":"","sources":["../../src/compilers.ts"],"names":[],"mappings":"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"}
@@ -12,8 +12,9 @@ import { NewInstance, Inject, Container, Autoinject } from '@spinajs/di';
12
12
  import { NotSupported } from '@spinajs/exceptions';
13
13
  import { Logger, Log } from '@spinajs/log';
14
14
  import { RawQuery, OnDuplicateQueryBuilder, InsertQueryBuilder, TableExistsQueryBuilder, OrmException, LimitQueryCompiler, LimitBuilder, CreateDatabaseCompiler, CreateDatabaseQueryBuilder, IdentifierQuoter, ColumnQueryCompiler, TableAliasCompiler, CreateViewQueryBuilder } from '@spinajs/orm';
15
- import { SqlInsertQueryCompiler, SqlColumnQueryCompiler, SqlAlterColumnQueryCompiler, SqlAlterTableQueryCompiler, SqlOnDuplicateQueryCompiler, SqlDefaultValueBuilder, escapeStringLiteral, assertCharsetName, SqlCreateViewQueryCompiler } from '@spinajs/orm-sql';
15
+ import { SqlInsertQueryCompiler, SqlColumnQueryCompiler, SqlAlterColumnQueryCompiler, SqlOnDuplicateQueryCompiler, SqlDefaultValueBuilder, escapeStringLiteral, assertCharsetName, SqlCreateViewQueryCompiler, SqlIndexQueryCompiler } from '@spinajs/orm-sql';
16
16
  import _ from 'lodash';
17
+ import { PostgresNowExpression } from './statements.js';
17
18
  let PostgresTableExistsCompiler = class PostgresTableExistsCompiler {
18
19
  constructor(builder) {
19
20
  this.builder = builder;
@@ -208,8 +209,9 @@ let PostgresColumnQueryCompiler = class PostgresColumnQueryCompiler extends SqlC
208
209
  }
209
210
  _stmt.push('GENERATED BY DEFAULT AS IDENTITY');
210
211
  }
211
- if (this.builder.Collation) {
212
- _stmt.push(`COLLATE ${this.Quoter.quote(this.builder.Collation)}`);
212
+ const collation = this.builder.Collation || (this.builder.Exact ? 'C' : '');
213
+ if (collation) {
214
+ _stmt.push(`COLLATE ${this.Quoter.quote(collation)}`);
213
215
  }
214
216
  if (this.builder.NotNull) {
215
217
  _stmt.push('NOT NULL');
@@ -289,7 +291,7 @@ let PostgresColumnQueryCompiler = class PostgresColumnQueryCompiler extends SqlC
289
291
  return 'TIME';
290
292
  case 'dateTime':
291
293
  case 'timestamp':
292
- // instants: the driver converts to UTC; precision 3 because JS dates carry milliseconds
294
+ // precision 3 because JS dates carry milliseconds
293
295
  return 'TIMESTAMPTZ(3)';
294
296
  case 'json':
295
297
  return 'JSONB';
@@ -318,14 +320,15 @@ let PostgresAlterColumnQueryCompiler = class PostgresAlterColumnQueryCompiler ex
318
320
  _add(definition) {
319
321
  if (this.builder.AfterColumn) {
320
322
  // AFTER is MySQL-only; postgres appends columns at the end and offers no placement
321
- this.Log.warn(`postgres cannot place column '${this.builder.Name}' AFTER '${this.builder.AfterColumn}' - the column is appended at the end of the table`);
323
+ this.Log.warn({ column: this.builder.Name, afterColumn: this.builder.AfterColumn }, 'postgres cannot place column ${column} AFTER ${afterColumn} - the column is appended at the end of the table');
322
324
  }
323
325
  return `ADD COLUMN ${definition}`;
324
326
  }
325
327
  _modify(_definition) {
326
328
  const column = this.Quoter.quote(this.builder.Name);
327
329
  const compiler = this.container.resolve(ColumnQueryCompiler, [this.builder]);
328
- const actions = [`ALTER COLUMN ${column} TYPE ${compiler.typeExpression()}`];
330
+ // Without USING, postgres refuses a type it has no implicit cast to, e.g. text to jsonb.
331
+ const actions = [`ALTER COLUMN ${column} TYPE ${compiler.typeExpression()} USING ${column}::${compiler.typeExpression()}`];
329
332
  actions.push(this.builder.NotNull ? `ALTER COLUMN ${column} SET NOT NULL` : `ALTER COLUMN ${column} DROP NOT NULL`);
330
333
  const defaultExpression = compiler.defaultExpression();
331
334
  actions.push(defaultExpression ? `ALTER COLUMN ${column} SET ${defaultExpression}` : `ALTER COLUMN ${column} DROP DEFAULT`);
@@ -341,17 +344,6 @@ PostgresAlterColumnQueryCompiler = __decorate([
341
344
  Inject(Container)
342
345
  ], PostgresAlterColumnQueryCompiler);
343
346
  export { PostgresAlterColumnQueryCompiler };
344
- /** Postgres folds an unquoted identifier to lower case, so a dropped column is quoted. */
345
- let PostgresAlterTableQueryCompiler = class PostgresAlterTableQueryCompiler extends SqlAlterTableQueryCompiler {
346
- droppedColumn(column) {
347
- return this.container.resolve(IdentifierQuoter).quote(column);
348
- }
349
- };
350
- PostgresAlterTableQueryCompiler = __decorate([
351
- NewInstance(),
352
- Inject(Container)
353
- ], PostgresAlterTableQueryCompiler);
354
- export { PostgresAlterTableQueryCompiler };
355
347
  /**
356
348
  * Postgres spells database DDL its own way: encoding is `ENCODING`, not CHARACTER SET,
357
349
  * and CREATE DATABASE has no IF NOT EXISTS at all — existence has to be checked by the
@@ -397,6 +389,10 @@ let PostgresDefaultValueBuilder = class PostgresDefaultValueBuilder extends SqlD
397
389
  this.Query = RawQuery.create('CURRENT_DATE');
398
390
  return this.Owner;
399
391
  }
392
+ dateTime() {
393
+ this.Query = RawQuery.create(new PostgresNowExpression().sql());
394
+ return this.Owner;
395
+ }
400
396
  };
401
397
  PostgresDefaultValueBuilder = __decorate([
402
398
  NewInstance()
@@ -457,4 +453,14 @@ PostgresCreateViewCompiler = __decorate([
457
453
  __metadata("design:paramtypes", [Container, CreateViewQueryBuilder])
458
454
  ], PostgresCreateViewCompiler);
459
455
  export { PostgresCreateViewCompiler };
456
+ // Index names are schema-wide, so DROP INDEX names no table.
457
+ let PostgresIndexQueryCompiler = class PostgresIndexQueryCompiler extends SqlIndexQueryCompiler {
458
+ _drop() {
459
+ return `DROP INDEX ${this.Quoter.quote(this._builder.Name)}`;
460
+ }
461
+ };
462
+ PostgresIndexQueryCompiler = __decorate([
463
+ NewInstance()
464
+ ], PostgresIndexQueryCompiler);
465
+ export { PostgresIndexQueryCompiler };
460
466
  //# sourceMappingURL=compilers.js.map