@warlock.js/cascade 5.20.0 → 5.22.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 (172) hide show
  1. package/CHANGELOG.md +40 -1
  2. package/cjs/index.cjs +2460 -1049
  3. package/cjs/index.cjs.map +1 -1
  4. package/esm/contracts/query-builder.contract.d.mts +30 -3
  5. package/esm/contracts/query-builder.contract.d.mts.map +1 -1
  6. package/esm/data-source/data-source-registry.d.mts +33 -1
  7. package/esm/data-source/data-source-registry.d.mts.map +1 -1
  8. package/esm/data-source/data-source-registry.mjs +75 -5
  9. package/esm/data-source/data-source-registry.mjs.map +1 -1
  10. package/esm/database-dirty-tracker.d.mts +5 -0
  11. package/esm/database-dirty-tracker.d.mts.map +1 -1
  12. package/esm/database-dirty-tracker.mjs +16 -0
  13. package/esm/database-dirty-tracker.mjs.map +1 -1
  14. package/esm/drivers/mongodb/mongodb-driver.d.mts +12 -0
  15. package/esm/drivers/mongodb/mongodb-driver.d.mts.map +1 -1
  16. package/esm/drivers/mongodb/mongodb-driver.mjs +47 -16
  17. package/esm/drivers/mongodb/mongodb-driver.mjs.map +1 -1
  18. package/esm/drivers/mongodb/mongodb-migration-driver.d.mts +1 -1
  19. package/esm/drivers/mongodb/mongodb-migration-driver.d.mts.map +1 -1
  20. package/esm/drivers/mongodb/mongodb-migration-driver.mjs +15 -18
  21. package/esm/drivers/mongodb/mongodb-migration-driver.mjs.map +1 -1
  22. package/esm/drivers/mongodb/mongodb-query-builder.d.mts +13 -3
  23. package/esm/drivers/mongodb/mongodb-query-builder.d.mts.map +1 -1
  24. package/esm/drivers/mongodb/mongodb-query-builder.mjs +72 -19
  25. package/esm/drivers/mongodb/mongodb-query-builder.mjs.map +1 -1
  26. package/esm/drivers/mongodb/mongodb-query-parser.d.mts +6 -0
  27. package/esm/drivers/mongodb/mongodb-query-parser.d.mts.map +1 -1
  28. package/esm/drivers/mongodb/mongodb-query-parser.mjs +128 -30
  29. package/esm/drivers/mongodb/mongodb-query-parser.mjs.map +1 -1
  30. package/esm/drivers/postgres/index.d.mts +2 -3
  31. package/esm/drivers/postgres/index.mjs +1 -2
  32. package/esm/drivers/postgres/postgres-blueprint.mjs +4 -4
  33. package/esm/drivers/postgres/postgres-blueprint.mjs.map +1 -1
  34. package/esm/drivers/postgres/postgres-dialect.d.mts +5 -1
  35. package/esm/drivers/postgres/postgres-dialect.d.mts.map +1 -1
  36. package/esm/drivers/postgres/postgres-dialect.mjs +38 -8
  37. package/esm/drivers/postgres/postgres-dialect.mjs.map +1 -1
  38. package/esm/drivers/postgres/postgres-driver.d.mts +52 -29
  39. package/esm/drivers/postgres/postgres-driver.d.mts.map +1 -1
  40. package/esm/drivers/postgres/postgres-driver.mjs +193 -57
  41. package/esm/drivers/postgres/postgres-driver.mjs.map +1 -1
  42. package/esm/drivers/postgres/postgres-migration-driver.d.mts +2 -1
  43. package/esm/drivers/postgres/postgres-migration-driver.d.mts.map +1 -1
  44. package/esm/drivers/postgres/postgres-migration-driver.mjs +13 -6
  45. package/esm/drivers/postgres/postgres-migration-driver.mjs.map +1 -1
  46. package/esm/drivers/postgres/postgres-query-builder.d.mts +18 -7
  47. package/esm/drivers/postgres/postgres-query-builder.d.mts.map +1 -1
  48. package/esm/drivers/postgres/postgres-query-builder.mjs +146 -31
  49. package/esm/drivers/postgres/postgres-query-builder.mjs.map +1 -1
  50. package/esm/drivers/postgres/postgres-query-parser.d.mts +23 -1
  51. package/esm/drivers/postgres/postgres-query-parser.d.mts.map +1 -1
  52. package/esm/drivers/postgres/postgres-query-parser.mjs +160 -43
  53. package/esm/drivers/postgres/postgres-query-parser.mjs.map +1 -1
  54. package/esm/drivers/postgres/postgres-sql-serializer.mjs +3 -2
  55. package/esm/drivers/postgres/postgres-sql-serializer.mjs.map +1 -1
  56. package/esm/drivers/postgres/postgres-ttl-purge.mjs +98 -0
  57. package/esm/drivers/postgres/postgres-ttl-purge.mjs.map +1 -0
  58. package/esm/drivers/postgres/postgres-type-converters.mjs +57 -0
  59. package/esm/drivers/postgres/postgres-type-converters.mjs.map +1 -0
  60. package/esm/events/model-events.d.mts +1 -1
  61. package/esm/events/model-events.d.mts.map +1 -1
  62. package/esm/events/model-events.mjs.map +1 -1
  63. package/esm/index.d.mts +5 -6
  64. package/esm/index.mjs +4 -5
  65. package/esm/migration/column-builder.d.mts.map +1 -1
  66. package/esm/migration/column-builder.mjs +2 -2
  67. package/esm/migration/column-builder.mjs.map +1 -1
  68. package/esm/migration/index.d.mts +2 -2
  69. package/esm/migration/index.mjs +1 -1
  70. package/esm/migration/migration-order.mjs +5 -2
  71. package/esm/migration/migration-order.mjs.map +1 -1
  72. package/esm/migration/migration-runner.d.mts +50 -5
  73. package/esm/migration/migration-runner.d.mts.map +1 -1
  74. package/esm/migration/migration-runner.mjs +369 -146
  75. package/esm/migration/migration-runner.mjs.map +1 -1
  76. package/esm/migration/migration.d.mts +36 -3
  77. package/esm/migration/migration.d.mts.map +1 -1
  78. package/esm/migration/migration.mjs +62 -5
  79. package/esm/migration/migration.mjs.map +1 -1
  80. package/esm/model/methods/accessor-methods.mjs +1 -3
  81. package/esm/model/methods/accessor-methods.mjs.map +1 -1
  82. package/esm/model/methods/delete-methods.mjs +6 -2
  83. package/esm/model/methods/delete-methods.mjs.map +1 -1
  84. package/esm/model/methods/hydration-methods.mjs +16 -2
  85. package/esm/model/methods/hydration-methods.mjs.map +1 -1
  86. package/esm/model/methods/instance-event-methods.mjs +2 -1
  87. package/esm/model/methods/instance-event-methods.mjs.map +1 -1
  88. package/esm/model/methods/meta-methods.mjs +53 -16
  89. package/esm/model/methods/meta-methods.mjs.map +1 -1
  90. package/esm/model/methods/query-methods.mjs +86 -15
  91. package/esm/model/methods/query-methods.mjs.map +1 -1
  92. package/esm/model/methods/static-event-methods.mjs +16 -1
  93. package/esm/model/methods/static-event-methods.mjs.map +1 -1
  94. package/esm/model/methods/write-methods.d.mts.map +1 -1
  95. package/esm/model/methods/write-methods.mjs +50 -50
  96. package/esm/model/methods/write-methods.mjs.map +1 -1
  97. package/esm/model/model.d.mts +16 -1
  98. package/esm/model/model.d.mts.map +1 -1
  99. package/esm/model/model.mjs +39 -5
  100. package/esm/model/model.mjs.map +1 -1
  101. package/esm/model/register-model.d.mts +6 -1
  102. package/esm/model/register-model.d.mts.map +1 -1
  103. package/esm/model/register-model.mjs +16 -1
  104. package/esm/model/register-model.mjs.map +1 -1
  105. package/esm/query-builder/query-builder.d.mts +21 -2
  106. package/esm/query-builder/query-builder.d.mts.map +1 -1
  107. package/esm/query-builder/query-builder.mjs +97 -20
  108. package/esm/query-builder/query-builder.mjs.map +1 -1
  109. package/esm/relations/key-conventions.mjs +13 -3
  110. package/esm/relations/key-conventions.mjs.map +1 -1
  111. package/esm/relations/pivot-operations.mjs +1 -1
  112. package/esm/relations/relation-loader.d.mts +15 -5
  113. package/esm/relations/relation-loader.d.mts.map +1 -1
  114. package/esm/relations/relation-loader.mjs +51 -16
  115. package/esm/relations/relation-loader.mjs.map +1 -1
  116. package/esm/remover/database-remover.d.mts.map +1 -1
  117. package/esm/remover/database-remover.mjs +22 -8
  118. package/esm/remover/database-remover.mjs.map +1 -1
  119. package/esm/restorer/database-restorer.d.mts +11 -2
  120. package/esm/restorer/database-restorer.d.mts.map +1 -1
  121. package/esm/restorer/database-restorer.mjs +45 -13
  122. package/esm/restorer/database-restorer.mjs.map +1 -1
  123. package/esm/sync/model-events.mjs +63 -3
  124. package/esm/sync/model-events.mjs.map +1 -1
  125. package/esm/sync/model-sync-operation.d.mts.map +1 -1
  126. package/esm/sync/model-sync-operation.mjs +3 -2
  127. package/esm/sync/model-sync-operation.mjs.map +1 -1
  128. package/esm/sync/sync-fanout.mjs +67 -0
  129. package/esm/sync/sync-fanout.mjs.map +1 -0
  130. package/esm/sync/sync-manager.d.mts +3 -42
  131. package/esm/sync/sync-manager.d.mts.map +1 -1
  132. package/esm/sync/sync-manager.mjs +37 -126
  133. package/esm/sync/sync-manager.mjs.map +1 -1
  134. package/esm/utils/connect-to-database.d.mts.map +1 -1
  135. package/esm/utils/connect-to-database.mjs +4 -4
  136. package/esm/utils/connect-to-database.mjs.map +1 -1
  137. package/esm/utils/database-writer.utils.d.mts +1 -1
  138. package/esm/utils/database-writer.utils.d.mts.map +1 -1
  139. package/esm/utils/database-writer.utils.mjs +1 -0
  140. package/esm/utils/database-writer.utils.mjs.map +1 -1
  141. package/esm/utils/define-model.d.mts.map +1 -1
  142. package/esm/utils/define-model.mjs +2 -10
  143. package/esm/utils/define-model.mjs.map +1 -1
  144. package/esm/utils/is-valid-date-value.mjs +3 -2
  145. package/esm/utils/is-valid-date-value.mjs.map +1 -1
  146. package/esm/utils/once-connected.d.mts.map +1 -1
  147. package/esm/utils/once-connected.mjs +12 -2
  148. package/esm/utils/once-connected.mjs.map +1 -1
  149. package/esm/validation/mutators/embed-mutator.mjs +19 -11
  150. package/esm/validation/mutators/embed-mutator.mjs.map +1 -1
  151. package/esm/validation/plugins/embed-validator-plugin.d.mts +2 -2
  152. package/esm/validation/plugins/embed-validator-plugin.d.mts.map +1 -1
  153. package/esm/validation/plugins/embed-validator-plugin.mjs +8 -2
  154. package/esm/validation/plugins/embed-validator-plugin.mjs.map +1 -1
  155. package/esm/validation/rules/database-model-rule.mjs +6 -5
  156. package/esm/validation/rules/database-model-rule.mjs.map +1 -1
  157. package/esm/validation/rules/exists-rule.mjs +6 -4
  158. package/esm/validation/rules/exists-rule.mjs.map +1 -1
  159. package/esm/validation/rules/unique-rule.mjs +5 -2
  160. package/esm/validation/rules/unique-rule.mjs.map +1 -1
  161. package/esm/validation/validators/embed-validator.d.mts.map +1 -1
  162. package/esm/validation/validators/embed-validator.mjs +1 -1
  163. package/esm/validation/validators/embed-validator.mjs.map +1 -1
  164. package/esm/writer/database-writer.d.mts +27 -0
  165. package/esm/writer/database-writer.d.mts.map +1 -1
  166. package/esm/writer/database-writer.mjs +85 -18
  167. package/esm/writer/database-writer.mjs.map +1 -1
  168. package/package.json +8 -7
  169. package/esm/drivers/postgres/postgres-sync-adapter.d.mts +0 -79
  170. package/esm/drivers/postgres/postgres-sync-adapter.d.mts.map +0 -1
  171. package/esm/drivers/postgres/postgres-sync-adapter.mjs +0 -162
  172. package/esm/drivers/postgres/postgres-sync-adapter.mjs.map +0 -1
@@ -184,6 +184,16 @@ declare class QueryBuilder<T = unknown> {
184
184
  whereNotNull(field: string): this;
185
185
  /** WHERE field BETWEEN low AND high. */
186
186
  whereBetween(field: string, range: [unknown, unknown]): this;
187
+ /** OR field IN values. */
188
+ orWhereIn(field: string, values: unknown[]): this;
189
+ /** OR field NOT IN values. */
190
+ orWhereNotIn(field: string, values: unknown[]): this;
191
+ /** OR field IS NULL. */
192
+ orWhereNull(field: string): this;
193
+ /** OR field IS NOT NULL. */
194
+ orWhereNotNull(field: string): this;
195
+ /** OR field BETWEEN low AND high. */
196
+ orWhereBetween(field: string, range: [unknown, unknown]): this;
187
197
  /** WHERE field NOT BETWEEN low AND high. */
188
198
  whereNotBetween(field: string, range: [unknown, unknown]): this;
189
199
  /**
@@ -205,11 +215,11 @@ declare class QueryBuilder<T = unknown> {
205
215
  * a string (potentially request input) is a literal.
206
216
  */
207
217
  private likePatternData;
208
- /** Starts with a prefix. */
218
+ /** Starts with a prefix (the value is literal text, `%` / `_` / `\` included). */
209
219
  whereStartsWith(field: string, value: string | number): this;
210
220
  /** Does NOT start with a prefix. */
211
221
  whereNotStartsWith(field: string, value: string | number): this;
212
- /** Ends with a suffix. */
222
+ /** Ends with a suffix (the value is literal text, `%` / `_` / `\` included). */
213
223
  whereEndsWith(field: string, value: string | number): this;
214
224
  /** Does NOT end with a suffix. */
215
225
  whereNotEndsWith(field: string, value: string | number): this;
@@ -540,6 +550,15 @@ declare class QueryBuilder<T = unknown> {
540
550
  orderByRandom(limit?: number): this;
541
551
  /** Order ascending by a date column (oldest first). */
542
552
  oldest(column?: string): this;
553
+ /** The model's created-at column, falling back to `createdAt` without a model. */
554
+ protected defaultCreatedAtColumn(): string;
555
+ /**
556
+ * Quote a column reference for raw SQL fragments.
557
+ * The base builder is dialect-agnostic and returns it untouched; SQL drivers override.
558
+ */
559
+ protected quoteColumn(field: string): string;
560
+ /** Quote an operand only when it is a plain column name; expressions and literals pass through. */
561
+ protected quoteOperand(operand: unknown): string;
543
562
  /** Limit number of results. */
544
563
  limit(value: number): this;
545
564
  /** Skip N results (OFFSET). */
@@ -1 +1 @@
1
- {"version":3,"file":"query-builder.d.mts","names":[],"sources":["../../../../../../../cascade/src/query-builder/query-builder.ts"],"mappings":"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"}
1
+ {"version":3,"file":"query-builder.d.mts","names":[],"sources":["../../../../../../../cascade/src/query-builder/query-builder.ts"],"mappings":"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"}
@@ -335,6 +335,40 @@ var QueryBuilder = class QueryBuilder {
335
335
  });
336
336
  return this;
337
337
  }
338
+ /** OR field IN values. */
339
+ orWhereIn(field, values) {
340
+ this.addOperation("orWhereIn", {
341
+ field,
342
+ values
343
+ });
344
+ return this;
345
+ }
346
+ /** OR field NOT IN values. */
347
+ orWhereNotIn(field, values) {
348
+ this.addOperation("orWhereNotIn", {
349
+ field,
350
+ values
351
+ });
352
+ return this;
353
+ }
354
+ /** OR field IS NULL. */
355
+ orWhereNull(field) {
356
+ this.addOperation("orWhereNull", { field });
357
+ return this;
358
+ }
359
+ /** OR field IS NOT NULL. */
360
+ orWhereNotNull(field) {
361
+ this.addOperation("orWhereNotNull", { field });
362
+ return this;
363
+ }
364
+ /** OR field BETWEEN low AND high. */
365
+ orWhereBetween(field, range) {
366
+ this.addOperation("orWhereBetween", {
367
+ field,
368
+ range
369
+ });
370
+ return this;
371
+ }
338
372
  /** WHERE field NOT BETWEEN low AND high. */
339
373
  whereNotBetween(field, range) {
340
374
  this.addOperation("whereNotBetween", {
@@ -379,21 +413,45 @@ var QueryBuilder = class QueryBuilder {
379
413
  isRegExp: true
380
414
  } : { pattern };
381
415
  }
382
- /** Starts with a prefix. */
416
+ /** Starts with a prefix (the value is literal text, `%` / `_` / `\` included). */
383
417
  whereStartsWith(field, value) {
384
- return this.whereLike(field, `${value}%`);
418
+ this.addOperation("whereLike", {
419
+ field,
420
+ pattern: `${value}%`,
421
+ value: String(value),
422
+ mode: "startsWith"
423
+ });
424
+ return this;
385
425
  }
386
426
  /** Does NOT start with a prefix. */
387
427
  whereNotStartsWith(field, value) {
388
- return this.whereNotLike(field, `${value}%`);
428
+ this.addOperation("whereNotLike", {
429
+ field,
430
+ pattern: `${value}%`,
431
+ value: String(value),
432
+ mode: "startsWith"
433
+ });
434
+ return this;
389
435
  }
390
- /** Ends with a suffix. */
436
+ /** Ends with a suffix (the value is literal text, `%` / `_` / `\` included). */
391
437
  whereEndsWith(field, value) {
392
- return this.whereLike(field, `%${value}`);
438
+ this.addOperation("whereLike", {
439
+ field,
440
+ pattern: `%${value}`,
441
+ value: String(value),
442
+ mode: "endsWith"
443
+ });
444
+ return this;
393
445
  }
394
446
  /** Does NOT end with a suffix. */
395
447
  whereNotEndsWith(field, value) {
396
- return this.whereNotLike(field, `%${value}`);
448
+ this.addOperation("whereNotLike", {
449
+ field,
450
+ pattern: `%${value}`,
451
+ value: String(value),
452
+ mode: "endsWith"
453
+ });
454
+ return this;
397
455
  }
398
456
  /**
399
457
  * Match on date portion only (time ignored).
@@ -449,7 +507,7 @@ var QueryBuilder = class QueryBuilder {
449
507
  */
450
508
  whereTime(field, value) {
451
509
  this.addOperation("whereRaw", {
452
- expression: `TIME(${field}) = ?`,
510
+ expression: `TIME(${this.quoteColumn(field)}) = ?`,
453
511
  bindings: [value]
454
512
  });
455
513
  return this;
@@ -461,7 +519,7 @@ var QueryBuilder = class QueryBuilder {
461
519
  */
462
520
  whereDay(field, value) {
463
521
  this.addOperation("whereRaw", {
464
- expression: `EXTRACT(DAY FROM ${field}) = ?`,
522
+ expression: `EXTRACT(DAY FROM ${this.quoteColumn(field)}) = ?`,
465
523
  bindings: [value]
466
524
  });
467
525
  return this;
@@ -469,7 +527,7 @@ var QueryBuilder = class QueryBuilder {
469
527
  /** Month extracted from a date field (1–12). */
470
528
  whereMonth(field, value) {
471
529
  this.addOperation("whereRaw", {
472
- expression: `EXTRACT(MONTH FROM ${field}) = ?`,
530
+ expression: `EXTRACT(MONTH FROM ${this.quoteColumn(field)}) = ?`,
473
531
  bindings: [value]
474
532
  });
475
533
  return this;
@@ -477,7 +535,7 @@ var QueryBuilder = class QueryBuilder {
477
535
  /** Year extracted from a date field. */
478
536
  whereYear(field, value) {
479
537
  this.addOperation("whereRaw", {
480
- expression: `EXTRACT(YEAR FROM ${field}) = ?`,
538
+ expression: `EXTRACT(YEAR FROM ${this.quoteColumn(field)}) = ?`,
481
539
  bindings: [value]
482
540
  });
483
541
  return this;
@@ -518,7 +576,7 @@ var QueryBuilder = class QueryBuilder {
518
576
  */
519
577
  whereJsonLength(path, operator, value) {
520
578
  this.addOperation("whereRaw", {
521
- expression: `jsonb_array_length(${path}) ${operator} ?`,
579
+ expression: `jsonb_array_length(${this.quoteColumn(path)}) ${operator} ?`,
522
580
  bindings: [value]
523
581
  });
524
582
  return this;
@@ -552,11 +610,11 @@ var QueryBuilder = class QueryBuilder {
552
610
  }
553
611
  /** WHERE id = value. */
554
612
  whereId(value) {
555
- return this.where("id", value);
613
+ return this.where(this.modelClass?.primaryKey ?? "id", value);
556
614
  }
557
615
  /** WHERE id IN values. */
558
616
  whereIds(values) {
559
- return this.whereIn("id", values);
617
+ return this.whereIn(this.modelClass?.primaryKey ?? "id", values);
560
618
  }
561
619
  /** WHERE uuid = value. */
562
620
  whereUuid(value) {
@@ -579,7 +637,11 @@ var QueryBuilder = class QueryBuilder {
579
637
  }
580
638
  /** Full-text search (OR). */
581
639
  orWhereFullText(fields, query) {
582
- return this.whereFullText(fields, query);
640
+ this.addOperation("orWhereFullText", {
641
+ fields: Array.isArray(fields) ? fields : [fields],
642
+ query
643
+ });
644
+ return this;
583
645
  }
584
646
  /** Alias for whereFullText with a single field. */
585
647
  whereSearch(field, query) {
@@ -590,8 +652,7 @@ var QueryBuilder = class QueryBuilder {
590
652
  * MongoDB-style convenience shorthand.
591
653
  */
592
654
  textSearch(query, filters) {
593
- if (filters) for (const [key, value] of Object.entries(filters)) this.where(key, value);
594
- return this;
655
+ throw new Error(`textSearch("${query}") is not supported by this query builder; use whereFullText(fields, query).`);
595
656
  }
596
657
  whereExists(param) {
597
658
  if (typeof param === "function") {
@@ -922,7 +983,7 @@ var QueryBuilder = class QueryBuilder {
922
983
  * @example q.selectAggregate("price", "sum", "totalRevenue")
923
984
  */
924
985
  selectAggregate(field, aggregate, alias) {
925
- return this.selectRaw({ [alias]: `${aggregate.toUpperCase()}(${field})` });
986
+ return this.selectRaw({ [alias]: `${aggregate.toUpperCase()}(${field === "*" ? field : this.quoteColumn(field)})` });
926
987
  }
927
988
  /** Existence check as a projected boolean field. */
928
989
  selectExists(field, alias) {
@@ -969,11 +1030,11 @@ var QueryBuilder = class QueryBuilder {
969
1030
  }
970
1031
  /** String concatenation as a projected field. */
971
1032
  selectConcat(fields, alias) {
972
- return this.selectRaw({ [alias]: fields.join(" || ") });
1033
+ return this.selectRaw({ [alias]: fields.map((field) => this.quoteOperand(field)).join(" || ") });
973
1034
  }
974
1035
  /** COALESCE (first non-null) as a projected field. */
975
1036
  selectCoalesce(fields, alias) {
976
- return this.selectRaw({ [alias]: `COALESCE(${fields.join(", ")})` });
1037
+ return this.selectRaw({ [alias]: `COALESCE(${fields.map((field) => this.quoteOperand(field)).join(", ")})` });
977
1038
  }
978
1039
  /** Window function expression. */
979
1040
  selectWindow(spec) {
@@ -1056,9 +1117,25 @@ var QueryBuilder = class QueryBuilder {
1056
1117
  return this;
1057
1118
  }
1058
1119
  /** Order ascending by a date column (oldest first). */
1059
- oldest(column = "createdAt") {
1120
+ oldest(column = this.defaultCreatedAtColumn()) {
1060
1121
  return this.orderBy(column, "asc");
1061
1122
  }
1123
+ /** The model's created-at column, falling back to `createdAt` without a model. */
1124
+ defaultCreatedAtColumn() {
1125
+ return this.modelClass?.createdAtColumn ?? "createdAt";
1126
+ }
1127
+ /**
1128
+ * Quote a column reference for raw SQL fragments.
1129
+ * The base builder is dialect-agnostic and returns it untouched; SQL drivers override.
1130
+ */
1131
+ quoteColumn(field) {
1132
+ return field;
1133
+ }
1134
+ /** Quote an operand only when it is a plain column name; expressions and literals pass through. */
1135
+ quoteOperand(operand) {
1136
+ if (typeof operand === "string" && /^[A-Za-z_]\w*(\.[A-Za-z_]\w*)*$/.test(operand)) return this.quoteColumn(operand);
1137
+ return String(operand);
1138
+ }
1062
1139
  /** Limit number of results. */
1063
1140
  limit(value) {
1064
1141
  this.addOperation("limit", { value });