uql-orm 0.19.0 → 0.20.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 (120) hide show
  1. package/CHANGELOG.md +66 -0
  2. package/README.md +1 -1
  3. package/dist/browser/uql-browser.min.js +2 -2
  4. package/dist/browser/uql-browser.min.js.map +3 -3
  5. package/dist/bunSql/bunSqlCockroachDialect.d.ts +1 -1
  6. package/dist/bunSql/bunSqlCockroachDialect.js +1 -1
  7. package/dist/dialect/abstractSqlDialect.d.ts +130 -58
  8. package/dist/dialect/abstractSqlDialect.d.ts.map +1 -1
  9. package/dist/dialect/abstractSqlDialect.js +226 -178
  10. package/dist/dialect/abstractSqlDialect.js.map +1 -1
  11. package/dist/dialect/jsonArrayElemMatchUtils.d.ts +5 -6
  12. package/dist/dialect/jsonArrayElemMatchUtils.d.ts.map +1 -1
  13. package/dist/dialect/jsonArrayElemMatchUtils.js +9 -19
  14. package/dist/dialect/jsonArrayElemMatchUtils.js.map +1 -1
  15. package/dist/dialect/jsonSql.d.ts +44 -0
  16. package/dist/dialect/jsonSql.d.ts.map +1 -0
  17. package/dist/dialect/jsonSql.js +57 -0
  18. package/dist/dialect/jsonSql.js.map +1 -0
  19. package/dist/dialect/mysqlLikeSqlDialect.d.ts +42 -2
  20. package/dist/dialect/mysqlLikeSqlDialect.d.ts.map +1 -1
  21. package/dist/dialect/mysqlLikeSqlDialect.js +73 -22
  22. package/dist/dialect/mysqlLikeSqlDialect.js.map +1 -1
  23. package/dist/dialect/pgLikeSqlDialect.d.ts +28 -10
  24. package/dist/dialect/pgLikeSqlDialect.d.ts.map +1 -1
  25. package/dist/dialect/pgLikeSqlDialect.js +56 -49
  26. package/dist/dialect/pgLikeSqlDialect.js.map +1 -1
  27. package/dist/dialect/queryContext.d.ts +13 -1
  28. package/dist/dialect/queryContext.d.ts.map +1 -1
  29. package/dist/dialect/queryContext.js +17 -2
  30. package/dist/dialect/queryContext.js.map +1 -1
  31. package/dist/dialect/vectorSqlDialect.d.ts +54 -0
  32. package/dist/dialect/vectorSqlDialect.d.ts.map +1 -0
  33. package/dist/dialect/vectorSqlDialect.js +70 -0
  34. package/dist/dialect/vectorSqlDialect.js.map +1 -0
  35. package/dist/entity/decorator/index-decorator.d.ts +6 -13
  36. package/dist/entity/decorator/index-decorator.d.ts.map +1 -1
  37. package/dist/entity/decorator/index-decorator.js.map +1 -1
  38. package/dist/http/handler.d.ts +5 -1
  39. package/dist/http/handler.d.ts.map +1 -1
  40. package/dist/http/handler.js.map +1 -1
  41. package/dist/maria/mariaDialect.d.ts +15 -4
  42. package/dist/maria/mariaDialect.d.ts.map +1 -1
  43. package/dist/maria/mariaDialect.js +25 -13
  44. package/dist/maria/mariaDialect.js.map +1 -1
  45. package/dist/migrate/generator/mongoSchemaGenerator.d.ts +1 -1
  46. package/dist/migrate/generator/mongoSchemaGenerator.d.ts.map +1 -1
  47. package/dist/mongo/mongoDialect.d.ts +27 -6
  48. package/dist/mongo/mongoDialect.d.ts.map +1 -1
  49. package/dist/mongo/mongoDialect.js +107 -14
  50. package/dist/mongo/mongoDialect.js.map +1 -1
  51. package/dist/mongo/mongodbQuerier.d.ts.map +1 -1
  52. package/dist/mongo/mongodbQuerier.js +5 -4
  53. package/dist/mongo/mongodbQuerier.js.map +1 -1
  54. package/dist/mysql/mysqlDialect.d.ts +0 -1
  55. package/dist/mysql/mysqlDialect.d.ts.map +1 -1
  56. package/dist/mysql/mysqlDialect.js +0 -1
  57. package/dist/mysql/mysqlDialect.js.map +1 -1
  58. package/dist/postgres/postgresWireDriverCapabilities.d.ts +1 -1
  59. package/dist/postgres/postgresWireDriverCapabilities.js +1 -1
  60. package/dist/schema/schemaAST.d.ts.map +1 -1
  61. package/dist/schema/schemaAST.js +7 -19
  62. package/dist/schema/schemaAST.js.map +1 -1
  63. package/dist/schema/types.d.ts +1 -1
  64. package/dist/sqlite/sqliteDialect.d.ts +28 -8
  65. package/dist/sqlite/sqliteDialect.d.ts.map +1 -1
  66. package/dist/sqlite/sqliteDialect.js +65 -80
  67. package/dist/sqlite/sqliteDialect.js.map +1 -1
  68. package/dist/type/dialect.d.ts +199 -0
  69. package/dist/type/dialect.d.ts.map +1 -0
  70. package/dist/type/dialect.js +2 -0
  71. package/dist/type/dialect.js.map +1 -0
  72. package/dist/type/entity.d.ts +64 -43
  73. package/dist/type/entity.d.ts.map +1 -1
  74. package/dist/type/entity.js.map +1 -1
  75. package/dist/type/index.d.ts +5 -0
  76. package/dist/type/index.d.ts.map +1 -1
  77. package/dist/type/index.js +5 -0
  78. package/dist/type/index.js.map +1 -1
  79. package/dist/type/querier.d.ts +3 -5
  80. package/dist/type/querier.d.ts.map +1 -1
  81. package/dist/type/querier.js.map +1 -1
  82. package/dist/type/query.d.ts +5 -711
  83. package/dist/type/query.d.ts.map +1 -1
  84. package/dist/type/query.js +1 -51
  85. package/dist/type/query.js.map +1 -1
  86. package/dist/type/queryAggregate.d.ts +191 -0
  87. package/dist/type/queryAggregate.d.ts.map +1 -0
  88. package/dist/type/queryAggregate.js +39 -0
  89. package/dist/type/queryAggregate.js.map +1 -0
  90. package/dist/type/queryRaw.d.ts +35 -0
  91. package/dist/type/queryRaw.d.ts.map +1 -0
  92. package/dist/type/queryRaw.js +11 -0
  93. package/dist/type/queryRaw.js.map +1 -0
  94. package/dist/type/queryWhere.d.ts +271 -0
  95. package/dist/type/queryWhere.d.ts.map +1 -0
  96. package/dist/type/queryWhere.js +2 -0
  97. package/dist/type/queryWhere.js.map +1 -0
  98. package/dist/type/universalQuerier.d.ts +2 -1
  99. package/dist/type/universalQuerier.d.ts.map +1 -1
  100. package/dist/type/utility.d.ts +8 -1
  101. package/dist/type/utility.d.ts.map +1 -1
  102. package/dist/type/vector.d.ts +55 -0
  103. package/dist/type/vector.d.ts.map +1 -0
  104. package/dist/type/vector.js +2 -0
  105. package/dist/type/vector.js.map +1 -0
  106. package/dist/util/ansiSqlLiteral.d.ts +2 -0
  107. package/dist/util/ansiSqlLiteral.d.ts.map +1 -1
  108. package/dist/util/ansiSqlLiteral.js +5 -1
  109. package/dist/util/ansiSqlLiteral.js.map +1 -1
  110. package/dist/util/dialect.util.d.ts +5 -5
  111. package/dist/util/dialect.util.d.ts.map +1 -1
  112. package/dist/util/dialect.util.js +15 -10
  113. package/dist/util/dialect.util.js.map +1 -1
  114. package/dist/util/object.util.d.ts +12 -1
  115. package/dist/util/object.util.d.ts.map +1 -1
  116. package/dist/util/object.util.js +18 -0
  117. package/dist/util/object.util.js.map +1 -1
  118. package/dist/util/relationQuery.util.js +1 -1
  119. package/dist/util/relationQuery.util.js.map +1 -1
  120. package/package.json +2 -2
@@ -1,7 +1,7 @@
1
1
  import SqlString from 'sqlstring';
2
- import { someKey } from '../util/index.js';
2
+ import { escapeSingleQuotes } from '../util/ansiSqlLiteral.js';
3
3
  import { AbstractSqlDialect } from './abstractSqlDialect.js';
4
- import { buildElemMatchConditions } from './jsonArrayElemMatchUtils.js';
4
+ import { JSON_PULL_ALIAS, jsonAssignCall, jsonPath, jsonRemoveCall, jsonSetTarget } from './jsonSql.js';
5
5
  /**
6
6
  * Shared JSON-array / JSON-object operator implementation between MySQL and MariaDB.
7
7
  *
@@ -9,6 +9,8 @@ import { buildElemMatchConditions } from './jsonArrayElemMatchUtils.js';
9
9
  * - `$size` (JSON_LENGTH)
10
10
  * - `$all` (JSON_CONTAINS)
11
11
  * - `$elemMatch` (JSON_TABLE, or fast JSON_CONTAINS for the simple case)
12
+ * - the update operators `$set` (JSON_SET), `$unset` (JSON_REMOVE), `$push` (JSON_MERGE_PRESERVE)
13
+ * and `$pull` (JSON_REPLACE over JSON_TABLE)
12
14
  */
13
15
  export class MysqlLikeSqlDialect extends AbstractSqlDialect {
14
16
  /** Default {@link DialectFeatures} for MySQL-compatible SQL dialects. */
@@ -27,6 +29,7 @@ export class MysqlLikeSqlDialect extends AbstractSqlDialect {
27
29
  supportsTimestamptz: false,
28
30
  defaultStringAsText: false,
29
31
  };
32
+ serialPrimaryKey = 'BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY';
30
33
  escapeIdChar = '`';
31
34
  tableOptions = 'ENGINE=InnoDB DEFAULT CHARSET=utf8mb4';
32
35
  beginTransactionCommand = 'START TRANSACTION';
@@ -55,30 +58,78 @@ export class MysqlLikeSqlDialect extends AbstractSqlDialect {
55
58
  // MySQL/MariaDB null-safe inequality: true when values differ or one side is NULL.
56
59
  return `NOT (${field} <=> ${ph})`;
57
60
  }
61
+ /** How a surviving element is fed back into the array a `$pull` rebuilds. */
62
+ jsonPullElem(alias) {
63
+ return `${alias}.v`;
64
+ }
65
+ /** Condition keeping the elements a `$pull` does *not* remove, given the bound pulled value. */
66
+ jsonPullKeep(alias, operand) {
67
+ return `${alias}.v <> ${operand}`;
68
+ }
69
+ /**
70
+ * `JSON_REPLACE` leaves an absent key (and a NULL column) untouched, which is what makes `$pull`
71
+ * a no-op there. The subquery reads the column, so its value binds exactly once.
72
+ */
73
+ jsonPullKey(ctx, expr, escapedCol, key, value) {
74
+ const elements = `JSON_TABLE(${escapedCol}, ${jsonPath(key, '[*]')} COLUMNS (v JSON PATH '$')) ${JSON_PULL_ALIAS}`;
75
+ const kept = `SELECT COALESCE(JSON_ARRAYAGG(${this.jsonPullElem(JSON_PULL_ALIAS)}), JSON_ARRAY()) FROM ${elements} WHERE ${this.jsonPullKeep(JSON_PULL_ALIAS, this.jsonScalarParam(ctx, value))}`;
76
+ return `JSON_REPLACE(${expr}, ${jsonPath(key)}, (${kept}))`;
77
+ }
78
+ /**
79
+ * Omitting the `COALESCE` on a NOT NULL column keeps MySQL's partial in-place JSON update
80
+ * applicable: it requires the target column as the direct `JSON_SET` input.
81
+ */
82
+ jsonSet(ctx, expr, set, field) {
83
+ return jsonAssignCall((value) => this.jsonScalarParam(ctx, value), 'JSON_SET', jsonSetTarget(expr, field, `'{}'`), set);
84
+ }
85
+ /**
86
+ * `JSON_MERGE_PRESERVE` concatenates arrays and creates absent keys, so every pushed key is
87
+ * handled in one call that references `expr` once - unlike `JSON_ARRAY_APPEND`, which needs a
88
+ * second reference for the array source and returns NULL on MariaDB for an absent key.
89
+ */
90
+ jsonPush(ctx, expr, push) {
91
+ const entries = Object.entries(push).map(([key, value]) => `'${escapeSingleQuotes(key)}', JSON_ARRAY(${this.jsonScalarParam(ctx, value)})`);
92
+ return `JSON_MERGE_PRESERVE(${expr}, JSON_OBJECT(${entries.join(', ')}))`;
93
+ }
94
+ jsonUnset(_ctx, expr, unset) {
95
+ return jsonRemoveCall('JSON_REMOVE', expr, unset);
96
+ }
97
+ /**
98
+ * MySQL's `->`/`->>` take a full JSON path (`'$.a.b'`, never a bare key) and only apply to a
99
+ * column reference, so the whole dotted path goes into a single accessor instead of the base's
100
+ * chained `col->'a'->>'b'`, which the server rejects with "Invalid JSON path expression".
101
+ */
102
+ getJsonPathScalarExpr(escapedColumn, jsonPathStr) {
103
+ return `(${escapedColumn}->>${jsonPath(jsonPathStr)})`;
104
+ }
105
+ getJsonPathJsonbExpr(escapedColumn, jsonPathStr) {
106
+ return `${escapedColumn}->${jsonPath(jsonPathStr)}`;
107
+ }
58
108
  jsonAll(ctx, jsonField, value) {
59
109
  return `JSON_CONTAINS(${jsonField}, ${this.addValue(ctx.values, JSON.stringify(value))})`;
60
110
  }
61
111
  jsonSize(ctx, jsonField, value) {
62
- const tmpCtx = this.createContext();
63
- this.buildSizeComparison(tmpCtx, () => tmpCtx.append(`JSON_LENGTH(${jsonField})`), value);
64
- ctx.pushValue(...tmpCtx.values);
65
- return tmpCtx.sql;
66
- }
67
- jsonElemMatch(ctx, jsonField, match) {
68
- const isPrimitiveElement = someKey(match, (k) => k.startsWith('$'));
69
- if (isPrimitiveElement) {
70
- const ops = Object.entries(match);
71
- const conditions = ops.map(([op, opVal]) => this.buildJsonFieldCondition(ctx, () => 'jt.elem_text', '', op, opVal));
72
- return `EXISTS (SELECT 1 FROM JSON_TABLE(${jsonField}, '$[*]' COLUMNS (elem_text TEXT PATH '$')) AS jt WHERE ${conditions.join(' AND ')})`;
73
- }
74
- const hasOperators = Object.values(match).some((v) => v && typeof v === 'object' && !Array.isArray(v) && someKey(v, (k) => k.startsWith('$')));
75
- if (!hasOperators) {
76
- return `JSON_CONTAINS(${jsonField}, ${this.addValue(ctx.values, JSON.stringify([match]))})`;
77
- }
78
- const fields = Object.keys(match);
79
- const columns = fields.map((f) => `${this.escapeId(f, true)} TEXT PATH '$.${this.escapeJsonKey(f)}'`).join(', ');
80
- const conditions = buildElemMatchConditions(match, (field, op, opVal) => this.buildJsonFieldCondition(ctx, (f) => `jt.${this.escapeId(f, true)}`, field, op, opVal), (field, val) => `jt.${this.escapeId(field, true)} = ${this.addValue(ctx.values, val)}`);
81
- return `EXISTS (SELECT 1 FROM JSON_TABLE(${jsonField}, '$[*]' COLUMNS (${columns})) AS jt WHERE ${conditions.join(' AND ')})`;
112
+ return this.buildFragment(ctx, (fragmentCtx) => this.buildSizeComparison(fragmentCtx, () => fragmentCtx.append(`JSON_LENGTH(${jsonField})`), value));
113
+ }
114
+ /**
115
+ * `JSON_TABLE` needs its columns declared upfront, so the object form maps `fields` to columns.
116
+ * The scalar form's column is `JSON`, not `TEXT`, when `asJson` - `TEXT PATH '$'` silently reads
117
+ * a compound (array/object) element as `NULL`, since MySQL doesn't coerce those to text; only a
118
+ * true scalar element survives that coercion. A nested `$elemMatch` (each element being an array
119
+ * that itself gets exploded) always requests `asJson`, so this is what makes that case reach the
120
+ * inner elements at all rather than finding nothing.
121
+ */
122
+ jsonElemFrom(jsonField, fields, alias, asJson = false) {
123
+ const columns = fields.length
124
+ ? fields.map((field) => `${this.escapeId(field, true)} TEXT PATH ${jsonPath(field)}`).join(', ')
125
+ : `elem_text ${asJson ? 'JSON' : 'TEXT'} PATH '$'`;
126
+ return `JSON_TABLE(${jsonField}, '$[*]' COLUMNS (${columns})) AS ${alias}`;
127
+ }
128
+ jsonElemRef(alias, field, asJson = false) {
129
+ const ref = field === undefined ? `${alias}.elem_text` : `${alias}.${this.escapeId(field, true)}`;
130
+ // `JSON_TABLE` columns stay `TEXT` so the string operators keep working; the JSON form reads
131
+ // that text back as JSON.
132
+ return asJson ? this.jsonCast(ref) : ref;
82
133
  }
83
134
  }
84
135
  //# sourceMappingURL=mysqlLikeSqlDialect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mysqlLikeSqlDialect.js","sourceRoot":"","sources":["../../src/dialect/mysqlLikeSqlDialect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mysqlLikeSqlDialect.js","sourceRoot":"","sources":["../../src/dialect/mysqlLikeSqlDialect.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,WAAW,CAAC;AAQlC,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAExG;;;;;;;;;GASG;AACH,MAAM,OAAgB,mBAAoB,SAAQ,kBAAkB;IAClE,yEAAyE;IAC7C,eAAe,GAAoB;QAC7D,gBAAgB,EAAE,KAAK;QACvB,YAAY,EAAE,KAAK;QACnB,aAAa,EAAE,KAAK;QACpB,WAAW,EAAE,IAAI;QACjB,gBAAgB,EAAE,KAAK;QACvB,gBAAgB,EAAE,KAAK;QACvB,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,IAAI;QACrB,aAAa,EAAE,IAAI;QACnB,gBAAgB,EAAE,QAAQ;QAC1B,oBAAoB,EAAE,KAAK;QAC3B,mBAAmB,EAAE,KAAK;QAC1B,mBAAmB,EAAE,KAAK;KAC3B,CAAC;IAEgB,gBAAgB,GAAG,4CAA4C,CAAC;IAEhE,YAAY,GAAG,GAAG,CAAC;IAEnB,YAAY,GAAG,uCAAuC,CAAC;IAEvD,uBAAuB,GAAG,mBAAmB,CAAC;IAE9C,wBAAwB,GAAG,QAAQ,CAAC;IAEpC,0BAA0B,GAAG,UAAU,CAAC;IAExC,sBAAsB,GAAG,YAAY,CAAC;IAEtC,oBAAoB,GAAG,kBAAkB,CAAC;IAE1C,eAAe,GAAG,UAAU,CAAC;IAE7B,iBAAiB,GAAG,cAAc,CAAC;IAEnC,iBAAiB,GAAG,eAAe,CAAC;IAEpC,cAAc,GAAG,SAAS,CAAC;IAE7C,yFAAyF;IACzF,kFAAkF;IAChE,cAAc,GAAmB,SAAS,CAAC;IAE3C,aAAa,GAAW,KAAK,CAAC;IAEvC,MAAM,CAAC,KAAc;QAC5B,OAAO,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAEkB,WAAW,CAAC,IAAY;QACzC,OAAO,QAAQ,IAAI,cAAc,CAAC;IACpC,CAAC;IAEkB,SAAS,CAAC,CAAS,EAAE,EAAU;QAChD,OAAO,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC;IAC3B,CAAC;IAEkB,MAAM,CAAC,KAAa,EAAE,EAAU;QACjD,mFAAmF;QACnF,OAAO,QAAQ,KAAK,QAAQ,EAAE,GAAG,CAAC;IACpC,CAAC;IAED,6EAA6E;IACnE,YAAY,CAAC,KAAa;QAClC,OAAO,GAAG,KAAK,IAAI,CAAC;IACtB,CAAC;IAED,gGAAgG;IACtF,YAAY,CAAC,KAAa,EAAE,OAAe;QACnD,OAAO,GAAG,KAAK,SAAS,OAAO,EAAE,CAAC;IACpC,CAAC;IAED;;;OAGG;IACgB,WAAW,CAC5B,GAAiB,EACjB,IAAY,EACZ,UAAkB,EAClB,GAAW,EACX,KAAc;QAEd,MAAM,QAAQ,GAAG,cAAc,UAAU,KAAK,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,+BAA+B,eAAe,EAAE,CAAC;QACnH,MAAM,IAAI,GAAG,iCAAiC,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,yBAAyB,QAAQ,UAAU,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;QAClM,OAAO,gBAAgB,IAAI,KAAK,QAAQ,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC;IAC9D,CAAC;IAED;;;OAGG;IACgB,OAAO,CACxB,GAAiB,EACjB,IAAY,EACZ,GAA4B,EAC5B,KAAoB;QAEpB,OAAO,cAAc,CACnB,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,EAC3C,UAAU,EACV,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,EAClC,GAAG,CACJ,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACgB,QAAQ,CAAC,GAAiB,EAAE,IAAY,EAAE,IAA6B;QACxF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CACtC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,kBAAkB,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAClG,CAAC;QACF,OAAO,uBAAuB,IAAI,iBAAiB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5E,CAAC;IAEkB,SAAS,CAAC,IAAkB,EAAE,IAAY,EAAE,KAAwB;QACrF,OAAO,cAAc,CAAC,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAED;;;;OAIG;IACgB,qBAAqB,CAAC,aAAqB,EAAE,WAAmB;QACjF,OAAO,IAAI,aAAa,MAAM,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC;IACzD,CAAC;IAEkB,oBAAoB,CAAC,aAAqB,EAAE,WAAmB;QAChF,OAAO,GAAG,aAAa,KAAK,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;IACtD,CAAC;IAEkB,OAAO,CAAC,GAAiB,EAAE,SAAiB,EAAE,KAAc;QAC7E,OAAO,iBAAiB,SAAS,KAAK,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;IAC5F,CAAC;IAEkB,QAAQ,CAAC,GAAiB,EAAE,SAAiB,EAAE,KAAsC;QACtG,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,EAAE,CAC7C,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,eAAe,SAAS,GAAG,CAAC,EAAE,KAAK,CAAC,CACpG,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACgB,YAAY,CAAC,SAAiB,EAAE,MAAyB,EAAE,KAAa,EAAE,MAAM,GAAG,KAAK;QACzG,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM;YAC3B,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAChG,CAAC,CAAC,aAAa,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,WAAW,CAAC;QACrD,OAAO,cAAc,SAAS,qBAAqB,OAAO,SAAS,KAAK,EAAE,CAAC;IAC7E,CAAC;IAEkB,WAAW,CAAC,KAAa,EAAE,KAAc,EAAE,MAAM,GAAG,KAAK;QAC1E,MAAM,GAAG,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,YAAY,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;QAClG,6FAA6F;QAC7F,0BAA0B;QAC1B,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC3C,CAAC;CACF"}
@@ -1,4 +1,4 @@
1
- import { type DialectFeatures, type EntityMeta, type FieldOptions, type JsonUpdateOp, type QueryComparisonOptions, type QueryConflictPaths, type QueryContext, type QueryOptions, type QuerySizeComparisonOps, type QueryVectorSearch, type Type, type VectorDistance } from '../type/index.js';
1
+ import { type DialectFeatures, type EntityMeta, type FieldOptions, type QueryComparisonOptions, type QueryConflictPaths, type QueryContext, type QueryOptions, type QuerySizeComparisonOps, type QueryVectorSearch, type Type, type VectorDistance } from '../type/index.js';
2
2
  import { AbstractSqlDialect } from './abstractSqlDialect.js';
3
3
  /**
4
4
  * Shared AST/quoting/JSONB/full-text-search/vector-search implementation between Postgres and
@@ -27,30 +27,48 @@ export declare abstract class PgLikeSqlDialect extends AbstractSqlDialect {
27
27
  insert<E>(ctx: QueryContext, entity: Type<E>, payload: E | E[], opts?: QueryOptions): void;
28
28
  upsert<E>(ctx: QueryContext, entity: Type<E>, conflictPaths: QueryConflictPaths<E>, payload: E | E[]): void;
29
29
  /**
30
- * Shared `INSERT ... ON CONFLICT (...) DO UPDATE/NOTHING RETURNING ...` builder, mirroring
31
- * {@link AbstractSqlDialect.onConflictUpsert}'s "assemble everything, don't hand back fragments"
32
- * shape for the `$N`-placeholder Postgres-wire dialects. `extraReturning` lets {@link PostgresDialect}
33
- * append `(xmax = 0) AS "_created"` to detect insert-vs-update; CockroachDB has no `xmax`/`ctid`
34
- * system columns, so it uses the default (empty) and `created` stays `undefined` in the result.
30
+ * Shared `INSERT ... ON CONFLICT (...) DO UPDATE/NOTHING RETURNING ...` builder, assembling
31
+ * everything upfront rather than handing back fragments, for the `$N`-placeholder Postgres-wire
32
+ * dialects. `extraReturning` lets {@link PostgresDialect} append `(xmax = 0) AS "_created"` to
33
+ * detect insert-vs-update; CockroachDB has no `xmax`/`ctid` system columns, so it uses the default
34
+ * (empty) and `created` stays `undefined` in the result.
35
35
  */
36
36
  protected buildUpsertOnConflict<E>(ctx: QueryContext, entity: Type<E>, conflictPaths: QueryConflictPaths<E>, payload: E | E[], extraReturning?: string): void;
37
- /** Full-text search: both dialects support `to_tsvector(...) @@ to_tsquery(...)`. */
37
+ /**
38
+ * Full-text search: `to_tsvector(...) @@ websearch_to_tsquery(...)`. `websearch_to_tsquery` takes
39
+ * free-form user input (quoted phrases, `or`, `-negation`) and never raises a syntax error, unlike
40
+ * `to_tsquery`, which rejects anything unparseable - including a plain two-word search.
41
+ */
38
42
  compare<E>(ctx: QueryContext, entity: Type<E>, key: string, val: unknown, opts?: QueryComparisonOptions): void;
39
43
  protected jsonAll(ctx: QueryContext, jsonField: string, value: unknown): string;
40
44
  protected jsonSize(ctx: QueryContext, jsonField: string, value: number | QuerySizeComparisonOps): string;
41
- protected jsonElemMatch(ctx: QueryContext, jsonField: string, match: Record<string, unknown>): string;
45
+ /**
46
+ * Object elements stay `jsonb` so each field can pick `->` or `->>`. Scalar elements are exploded
47
+ * as text unless they are compared as JSON, where `_text` would yield `text = jsonb`.
48
+ */
49
+ protected jsonElemFrom(jsonField: string, fields: readonly string[], alias: string, asJson?: boolean): string;
50
+ protected jsonElemRef(alias: string, field?: string, asJson?: boolean): string;
42
51
  protected get regexpOp(): string;
43
52
  protected ilikeExpr(f: string, ph: string): string;
44
53
  protected get neOp(): string;
45
54
  protected formatIn(ctx: QueryContext, values: unknown[], negate: boolean): string;
46
55
  protected numericCast(expr: string): string;
47
56
  protected formatPersistableValue<E>(ctx: QueryContext, field: FieldOptions, value: unknown): void;
48
- protected formatJsonUpdate<E>(ctx: QueryContext, escapedCol: string, value: JsonUpdateOp<E>): void;
57
+ /**
58
+ * `create_if_missing => false` keeps an absent key (and a NULL column) untouched; `WITH
59
+ * ORDINALITY` keeps the surviving elements in their original order.
60
+ */
61
+ protected jsonPullKey(ctx: QueryContext, expr: string, escapedCol: string, key: string, value: unknown): string;
62
+ protected jsonSet(ctx: QueryContext, expr: string, set: Record<string, unknown>, field?: FieldOptions): string;
63
+ /** The only fragment that references `expr` twice - safe here because placeholders are numbered. */
64
+ protected jsonPush(ctx: QueryContext, expr: string, push: Record<string, unknown>): string;
65
+ protected jsonUnset(ctx: QueryContext, expr: string, unset: readonly string[]): string;
66
+ /** Postgres binds JSON with a numbered placeholder and an explicit cast, per driver capability. */
67
+ protected jsonScalarParam(ctx: QueryContext, value: unknown): string;
49
68
  /**
50
69
  * Helper to add a JSON value to context with appropriate stringification and cast.
51
70
  */
52
71
  private jsonVal;
53
- escape(value: unknown): string;
54
72
  /**
55
73
  * pgvector distance operators. Not every dialect supports every metric - see
56
74
  * {@link CockroachDialect.vectorOpsClass} for which ones each dialect actually has; the
@@ -1 +1 @@
1
- {"version":3,"file":"pgLikeSqlDialect.d.ts","sourceRoot":"","sources":["../../src/dialect/pgLikeSqlDialect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pgLikeSqlDialect.d.ts","sourceRoot":"","sources":["../../src/dialect/pgLikeSqlDialect.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import { getMeta } from '../entity/index.js';
2
2
  import { QueryRaw, } from '../type/index.js';
3
- import { escapeAnsiSqlLiteral } from '../util/ansiSqlLiteral.js';
4
- import { hasKeys, isJsonType, someKey } from '../util/index.js';
3
+ import { escapeSingleQuotes } from '../util/ansiSqlLiteral.js';
4
+ import { isJsonType } from '../util/index.js';
5
5
  import { AbstractSqlDialect } from './abstractSqlDialect.js';
6
- import { buildElemMatchConditions } from './jsonArrayElemMatchUtils.js';
6
+ import { JSON_PULL_ALIAS, jsonSetTarget } from './jsonSql.js';
7
7
  /**
8
8
  * Shared AST/quoting/JSONB/full-text-search/vector-search implementation between Postgres and
9
9
  * CockroachDB (wire- and SQL-compatible for everything below, including `to_tsvector`/`to_tsquery`
@@ -67,11 +67,11 @@ export class PgLikeSqlDialect extends AbstractSqlDialect {
67
67
  this.buildUpsertOnConflict(ctx, entity, conflictPaths, payload);
68
68
  }
69
69
  /**
70
- * Shared `INSERT ... ON CONFLICT (...) DO UPDATE/NOTHING RETURNING ...` builder, mirroring
71
- * {@link AbstractSqlDialect.onConflictUpsert}'s "assemble everything, don't hand back fragments"
72
- * shape for the `$N`-placeholder Postgres-wire dialects. `extraReturning` lets {@link PostgresDialect}
73
- * append `(xmax = 0) AS "_created"` to detect insert-vs-update; CockroachDB has no `xmax`/`ctid`
74
- * system columns, so it uses the default (empty) and `created` stays `undefined` in the result.
70
+ * Shared `INSERT ... ON CONFLICT (...) DO UPDATE/NOTHING RETURNING ...` builder, assembling
71
+ * everything upfront rather than handing back fragments, for the `$N`-placeholder Postgres-wire
72
+ * dialects. `extraReturning` lets {@link PostgresDialect} append `(xmax = 0) AS "_created"` to
73
+ * detect insert-vs-update; CockroachDB has no `xmax`/`ctid` system columns, so it uses the default
74
+ * (empty) and `created` stays `undefined` in the result.
75
75
  */
76
76
  buildUpsertOnConflict(ctx, entity, conflictPaths, payload, extraReturning = '') {
77
77
  const meta = getMeta(entity);
@@ -81,7 +81,11 @@ export class PgLikeSqlDialect extends AbstractSqlDialect {
81
81
  super.insert(ctx, entity, payload);
82
82
  ctx.append(` ON CONFLICT (${keysStr}) ${onConflict} ${this.returningId(entity)}${extraReturning}`);
83
83
  }
84
- /** Full-text search: both dialects support `to_tsvector(...) @@ to_tsquery(...)`. */
84
+ /**
85
+ * Full-text search: `to_tsvector(...) @@ websearch_to_tsquery(...)`. `websearch_to_tsquery` takes
86
+ * free-form user input (quoted phrases, `or`, `-negation`) and never raises a syntax error, unlike
87
+ * `to_tsquery`, which rejects anything unparseable - including a plain two-word search.
88
+ */
85
89
  compare(ctx, entity, key, val, opts = {}) {
86
90
  if (key === '$text') {
87
91
  const meta = getMeta(entity);
@@ -93,7 +97,9 @@ export class PgLikeSqlDialect extends AbstractSqlDialect {
93
97
  return this.escapeId(columnName);
94
98
  })
95
99
  .join(` || ' ' || `);
96
- ctx.append(`to_tsvector(${fields}) @@ to_tsquery(`);
100
+ // The config is bound once and its numbered placeholder reused by both calls.
101
+ const config = search.$config ? `${this.addValue(ctx.values, search.$config)}::regconfig, ` : '';
102
+ ctx.append(`to_tsvector(${config}${fields}) @@ websearch_to_tsquery(${config}`);
97
103
  ctx.addValue(search.$value);
98
104
  ctx.append(')');
99
105
  return;
@@ -104,24 +110,21 @@ export class PgLikeSqlDialect extends AbstractSqlDialect {
104
110
  return `${jsonField} @> ${this.jsonVal(ctx, value)}`;
105
111
  }
106
112
  jsonSize(ctx, jsonField, value) {
107
- const tmpCtx = this.createContext();
108
- this.buildSizeComparison(tmpCtx, () => tmpCtx.append(`jsonb_array_length(${jsonField})`), value);
109
- ctx.pushValue(...tmpCtx.values);
110
- return tmpCtx.sql;
111
- }
112
- jsonElemMatch(ctx, jsonField, match) {
113
- // Primitive element match: keys are operators (e.g. { $startsWith: 'ad' } on a string[])
114
- const isPrimitiveElement = someKey(match, (k) => k.startsWith('$'));
115
- if (isPrimitiveElement) {
116
- const conditions = Object.entries(match).map(([op, opVal]) => this.buildJsonFieldCondition(ctx, () => 'elem', '', op, opVal));
117
- return `EXISTS (SELECT 1 FROM jsonb_array_elements_text(${jsonField}) AS elem WHERE ${conditions.join(' AND ')})`;
118
- }
119
- const hasOperators = Object.values(match).some((v) => v && typeof v === 'object' && !Array.isArray(v) && someKey(v, (k) => k.startsWith('$')));
120
- if (!hasOperators) {
121
- return `${jsonField} @> ${this.jsonVal(ctx, [match])}`;
113
+ return this.buildFragment(ctx, (fragmentCtx) => this.buildSizeComparison(fragmentCtx, () => fragmentCtx.append(`jsonb_array_length(${jsonField})`), value));
114
+ }
115
+ /**
116
+ * Object elements stay `jsonb` so each field can pick `->` or `->>`. Scalar elements are exploded
117
+ * as text unless they are compared as JSON, where `_text` would yield `text = jsonb`.
118
+ */
119
+ jsonElemFrom(jsonField, fields, alias, asJson = false) {
120
+ const fn = fields.length || asJson ? 'jsonb_array_elements' : 'jsonb_array_elements_text';
121
+ return `${fn}(${jsonField}) AS ${alias}`;
122
+ }
123
+ jsonElemRef(alias, field, asJson = false) {
124
+ if (field === undefined) {
125
+ return alias;
122
126
  }
123
- const conditions = buildElemMatchConditions(match, (field, op, opVal) => this.buildJsonFieldCondition(ctx, (f) => `elem->>'${this.escapeJsonKey(f)}'`, field, op, opVal), (field, val) => `elem->>'${this.escapeJsonKey(field)}' = ${this.addValue(ctx.values, val)}`);
124
- return `EXISTS (SELECT 1 FROM jsonb_array_elements(${jsonField}) AS elem WHERE ${conditions.join(' AND ')})`;
127
+ return asJson ? `${alias}->'${escapeSingleQuotes(field)}'` : `${alias}->>'${escapeSingleQuotes(field)}'`;
125
128
  }
126
129
  get regexpOp() {
127
130
  return '~';
@@ -157,25 +160,32 @@ export class PgLikeSqlDialect extends AbstractSqlDialect {
157
160
  }
158
161
  super.formatPersistableValue(ctx, field, value);
159
162
  }
160
- formatJsonUpdate(ctx, escapedCol, value) {
161
- let expr = escapedCol;
162
- if (hasKeys(value.$merge)) {
163
- expr = `COALESCE(${escapedCol}, '{}'::jsonb) || ${this.jsonVal(ctx, value.$merge)}`;
164
- }
165
- if (hasKeys(value.$push)) {
166
- const push = value.$push;
167
- for (const [key, v] of Object.entries(push)) {
168
- const currentExpr = expr;
169
- const ph = this.jsonVal(ctx, v);
170
- expr = `jsonb_set(${currentExpr}, '{${this.escapeJsonKey(key)}}', COALESCE((${currentExpr})->'${this.escapeJsonKey(key)}', '[]'::jsonb) || jsonb_build_array(${ph}))`;
171
- }
172
- }
173
- if (value.$unset?.length) {
174
- for (const key of value.$unset) {
175
- expr = `(${expr}) - '${this.escapeJsonKey(key)}'`;
176
- }
177
- }
178
- ctx.append(`${escapedCol} = ${expr}`);
163
+ /**
164
+ * `create_if_missing => false` keeps an absent key (and a NULL column) untouched; `WITH
165
+ * ORDINALITY` keeps the surviving elements in their original order.
166
+ */
167
+ jsonPullKey(ctx, expr, escapedCol, key, value) {
168
+ const escapedKey = escapeSingleQuotes(key);
169
+ const kept = `SELECT jsonb_agg(${JSON_PULL_ALIAS}.val ORDER BY ${JSON_PULL_ALIAS}.ord) FROM jsonb_array_elements(${escapedCol}->'${escapedKey}') WITH ORDINALITY AS ${JSON_PULL_ALIAS}(val, ord) WHERE ${JSON_PULL_ALIAS}.val <> ${this.jsonVal(ctx, value)}`;
170
+ return `jsonb_set(${expr}, '{${escapedKey}}', COALESCE((${kept}), '[]'::jsonb), false)`;
171
+ }
172
+ jsonSet(ctx, expr, set, field) {
173
+ return `${jsonSetTarget(expr, field, `'{}'::jsonb`)} || ${this.jsonVal(ctx, set)}`;
174
+ }
175
+ /** The only fragment that references `expr` twice - safe here because placeholders are numbered. */
176
+ jsonPush(ctx, expr, push) {
177
+ return Object.entries(push).reduce((acc, [key, value]) => {
178
+ const escapedKey = escapeSingleQuotes(key);
179
+ const ph = this.jsonVal(ctx, value);
180
+ return `jsonb_set(${acc}, '{${escapedKey}}', COALESCE((${acc})->'${escapedKey}', '[]'::jsonb) || jsonb_build_array(${ph}))`;
181
+ }, expr);
182
+ }
183
+ jsonUnset(ctx, expr, unset) {
184
+ return `(${expr}) - ${this.addValue(ctx.values, [...unset])}::text[]`;
185
+ }
186
+ /** Postgres binds JSON with a numbered placeholder and an explicit cast, per driver capability. */
187
+ jsonScalarParam(ctx, value) {
188
+ return this.jsonVal(ctx, value);
179
189
  }
180
190
  /**
181
191
  * Helper to add a JSON value to context with appropriate stringification and cast.
@@ -189,9 +199,6 @@ export class PgLikeSqlDialect extends AbstractSqlDialect {
189
199
  const ph = this.addValue(ctx.values, json);
190
200
  return this.features.explicitJsonCast ? `(${ph}::text)::${type}` : `${ph}::${type}`;
191
201
  }
192
- escape(value) {
193
- return escapeAnsiSqlLiteral(value);
194
- }
195
202
  /**
196
203
  * pgvector distance operators. Not every dialect supports every metric - see
197
204
  * {@link CockroachDialect.vectorOpsClass} for which ones each dialect actually has; the
@@ -1 +1 @@
1
- {"version":3,"file":"pgLikeSqlDialect.js","sourceRoot":"","sources":["../../src/dialect/pgLikeSqlDialect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pgLikeSqlDialect.js","sourceRoot":"","sources":["../../src/dialect/pgLikeSqlDialect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EASL,QAAQ,GAMT,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE9D;;;;;;;;GAQG;AACH,MAAM,OAAgB,gBAAiB,SAAQ,kBAAkB;IAC/D,kEAAkE;IACtC,eAAe,GAAoB;QAC7D,gBAAgB,EAAE,KAAK;QACvB,YAAY,EAAE,IAAI;QAClB,aAAa,EAAE,IAAI;QACnB,WAAW,EAAE,IAAI;QACjB,gBAAgB,EAAE,IAAI;QACtB,gBAAgB,EAAE,IAAI;QACtB,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,IAAI;QACrB,aAAa,EAAE,KAAK;QACpB,gBAAgB,EAAE,QAAQ;QAC1B,oBAAoB,EAAE,IAAI;QAC1B,mBAAmB,EAAE,IAAI;QACzB,mBAAmB,EAAE,IAAI;KAC1B,CAAC;IAEgB,YAAY,GAAG,GAAG,CAAC;IACrC,+FAA+F;IAC/F,iGAAiG;IACjG,6FAA6F;IAC7F,4FAA4F;IAC1E,gBAAgB,GAAW,qDAAqD,CAAC;IACjF,YAAY,GAAG,EAAE,CAAC;IAClB,uBAAuB,GAAG,OAAO,CAAC;IAClC,wBAAwB,GAAG,QAAQ,CAAC;IACpC,0BAA0B,GAAG,UAAU,CAAC;IACxC,mBAAmB,GAAG,kBAAkB,CAAC;IACzC,cAAc,GAAG,WAAW,CAAC;IAC7B,aAAa,GAAW,KAAK,CAAC;IAE9B,cAAc,GAAoD,IAAI,GAAG,CAAC;QAC1F,CAAC,QAAQ,EAAE,mBAAmB,CAAC;QAC/B,CAAC,IAAI,EAAE,eAAe,CAAC;QACvB,CAAC,OAAO,EAAE,eAAe,CAAC;QAC1B,CAAC,IAAI,EAAE,eAAe,CAAC;QACvB,CAAC,SAAS,EAAE,iBAAiB,CAAC;KAC/B,CAAC,CAAC;IAEM,cAAc,CAAC,KAAc;QACpC,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACvE,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAEQ,WAAW,CAAC,KAAa;QAChC,OAAO,IAAI,KAAK,EAAE,CAAC;IACrB,CAAC;IAEQ,MAAM,CAAI,GAAiB,EAAE,MAAe,EAAE,OAAgB,EAAE,IAAmB;QAC1F,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QACzC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7C,CAAC;IAEQ,MAAM,CAAI,GAAiB,EAAE,MAAe,EAAE,aAAoC,EAAE,OAAgB;QAC3G,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC;IAED;;;;;;OAMG;IACO,qBAAqB,CAC7B,GAAiB,EACjB,MAAe,EACf,aAAoC,EACpC,OAAgB,EAChB,cAAc,GAAG,EAAE;QAEnB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;QAChH,MAAM,OAAO,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QACpE,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,iBAAiB,MAAM,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;QACrE,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,GAAG,CAAC,MAAM,CAAC,iBAAiB,OAAO,KAAK,UAAU,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,cAAc,EAAE,CAAC,CAAC;IACrG,CAAC;IAED;;;;OAIG;IACM,OAAO,CACd,GAAiB,EACjB,MAAe,EACf,GAAW,EACX,GAAY,EACZ,IAAI,GAA2B,EAAE;QAEjC,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;YAC7B,MAAM,MAAM,GAAG,GAAgC,CAAC;YAChD,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;iBAClC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACZ,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAChC,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAM,CAAC,CAAC;gBACxD,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACnC,CAAC,CAAC;iBACD,IAAI,CAAC,aAAa,CAAC,CAAC;YACvB,8EAA8E;YAC9E,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;YACjG,GAAG,CAAC,MAAM,CAAC,eAAe,MAAM,GAAG,MAAM,6BAA6B,MAAM,EAAE,CAAC,CAAC;YAChF,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC5B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IAEkB,OAAO,CAAC,GAAiB,EAAE,SAAiB,EAAE,KAAc;QAC7E,OAAO,GAAG,SAAS,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;IACvD,CAAC;IAEkB,QAAQ,CAAC,GAAiB,EAAE,SAAiB,EAAE,KAAsC;QACtG,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,EAAE,CAC7C,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,sBAAsB,SAAS,GAAG,CAAC,EAAE,KAAK,CAAC,CAC3G,CAAC;IACJ,CAAC;IAED;;;OAGG;IACgB,YAAY,CAAC,SAAiB,EAAE,MAAyB,EAAE,KAAa,EAAE,MAAM,GAAG,KAAK;QACzG,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,2BAA2B,CAAC;QAC1F,OAAO,GAAG,EAAE,IAAI,SAAS,QAAQ,KAAK,EAAE,CAAC;IAC3C,CAAC;IAEkB,WAAW,CAAC,KAAa,EAAE,KAAc,EAAE,MAAM,GAAG,KAAK;QAC1E,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,MAAM,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC;IAC3G,CAAC;IAED,IAAuB,QAAQ;QAC7B,OAAO,GAAG,CAAC;IACb,CAAC;IAEkB,SAAS,CAAC,CAAS,EAAE,EAAU;QAChD,OAAO,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC;IAC5B,CAAC;IAED,IAAuB,IAAI;QACzB,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAEkB,QAAQ,CAAC,GAAiB,EAAE,MAAiB,EAAE,MAAe;QAC/E,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC;QACzE,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7C,OAAO,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC;IACrD,CAAC;IAEkB,WAAW,CAAC,IAAY;QACzC,OAAO,IAAI,IAAI,YAAY,CAAC;IAC9B,CAAC;IAEkB,sBAAsB,CAAI,GAAiB,EAAE,KAAmB,EAAE,KAAc;QACjG,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;YAC9B,KAAK,CAAC,sBAAsB,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YAChD,OAAO;QACT,CAAC;QACD,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,IAAsB,CAAC,CAAC,CAAC;YACnE,OAAO;QACT,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACpD,GAAG,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACrC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACvB,OAAO;QACT,CAAC;QACD,KAAK,CAAC,sBAAsB,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IAED;;;OAGG;IACgB,WAAW,CAC5B,GAAiB,EACjB,IAAY,EACZ,UAAkB,EAClB,GAAW,EACX,KAAc;QAEd,MAAM,UAAU,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,oBAAoB,eAAe,iBAAiB,eAAe,mCAAmC,UAAU,MAAM,UAAU,yBAAyB,eAAe,oBAAoB,eAAe,WAAW,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;QAC9P,OAAO,aAAa,IAAI,OAAO,UAAU,iBAAiB,IAAI,yBAAyB,CAAC;IAC1F,CAAC;IAEkB,OAAO,CACxB,GAAiB,EACjB,IAAY,EACZ,GAA4B,EAC5B,KAAoB;QAEpB,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;IACrF,CAAC;IAED,oGAAoG;IACjF,QAAQ,CAAC,GAAiB,EAAE,IAAY,EAAE,IAA6B;QACxF,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YACvD,MAAM,UAAU,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;YAC3C,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACpC,OAAO,aAAa,GAAG,OAAO,UAAU,iBAAiB,GAAG,OAAO,UAAU,wCAAwC,EAAE,IAAI,CAAC;QAC9H,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC;IAEkB,SAAS,CAAC,GAAiB,EAAE,IAAY,EAAE,KAAwB;QACpF,OAAO,IAAI,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC;IACxE,CAAC;IAED,mGAAmG;IAChF,eAAe,CAAC,GAAiB,EAAE,KAAc;QAClE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACK,OAAO,CAAC,GAAiB,EAAE,KAAc,EAAE,IAAI,GAAmB,OAAO;QAC/E,IAAI,KAAK,YAAY,QAAQ;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACvE,IAAI,KAAK,IAAI,IAAI;YAAE,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QAExE,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,EAAE,YAAY,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC;IACtF,CAAC;IAED;;;;;OAKG;IACK,MAAM,CAAU,UAAU,GAAmC;QACnE,MAAM,EAAE,KAAK;QACb,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,KAAK;QACZ,EAAE,EAAE,KAAK;QACT,OAAO,EAAE,KAAK;KACf,CAAC;IAEF,gFAAgF;IAC7D,gBAAgB,CACjC,GAAiB,EACjB,IAAmB,EACnB,GAAW,EACX,MAAyB;QAEzB,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QAC1F,IAAI,CAAC,IAAI,CAAC,cAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,CAAC,WAAW,6CAA6C,QAAQ,EAAE,CAAC,CAAC;QAClG,CAAC;QACD,MAAM,EAAE,GAAG,gBAAgB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACjD,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC/C,GAAG,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9C,GAAG,CAAC,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC,CAAC;IAChC,CAAC;CACF;AAED;;;GAGG;AACH,SAAS,SAAS,CAAC,GAAc;IAC/B,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAC/B,IAAI,GAAG,IAAI,IAAI;YAAE,OAAO,MAAM,CAAC;QAC/B,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,OAAO,GAAG,KAAK,SAAS;YAAE,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QAC5D,IAAI,GAAG,YAAY,UAAU,IAAI,CAAC,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACzF,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;iBACxB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;iBAC3C,IAAI,CAAC,EAAE,CAAC,CAAC;YACZ,OAAO,SAAS,GAAG,GAAG,CAAC;QACzB,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QACxB,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAChE,OAAO,IAAI,OAAO,GAAG,CAAC;IACxB,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACnC,CAAC"}
@@ -10,10 +10,15 @@ export declare class SqlQueryContext implements QueryContext {
10
10
  readonly dialect: QueryDialect;
11
11
  private readonly sqlChunks;
12
12
  private readonly params;
13
+ private aliasCounter;
13
14
  /**
14
15
  * @param dialect The SQL dialect used to determine how values should be formatted as placeholders.
16
+ * @param params An existing values array to bind into instead of a fresh one - shared by a
17
+ * fragment context built via {@link AbstractSqlDialect.buildFragment}, so a bound value's
18
+ * placeholder is numbered correctly against the real query from the moment it's added, rather
19
+ * than needing to be reconciled after the fact.
15
20
  */
16
- constructor(dialect: QueryDialect);
21
+ constructor(dialect: QueryDialect, params?: unknown[]);
17
22
  /**
18
23
  * Appends raw SQL string fragments to the query.
19
24
  *
@@ -37,6 +42,13 @@ export declare class SqlQueryContext implements QueryContext {
37
42
  * @returns The current context instance for method chaining.
38
43
  */
39
44
  pushValue(...values: unknown[]): this;
45
+ /**
46
+ * A fresh alias unique within this context, e.g. `nextAlias('_uql_elem')` -> `'_uql_elem_1'`,
47
+ * `'_uql_elem_2'`, ... A fragment context (see the constructor) counts independently of the `ctx`
48
+ * it shares values with - fine today since no fragment-building hook also generates aliases, but
49
+ * worth widening (share this counter too, the same way `params` is shared) if one ever does.
50
+ */
51
+ nextAlias(prefix: string): string;
40
52
  /**
41
53
  * Returns the complete SQL query string by joining all accumulated chunks.
42
54
  */
@@ -1 +1 @@
1
- {"version":3,"file":"queryContext.d.ts","sourceRoot":"","sources":["../../src/dialect/queryContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEnE;;;;;;GAMG;AACH,qBAAa,eAAgB,YAAW,YAAY;IAOtC,QAAQ,CAAC,OAAO,EAAE,YAAY;IAN1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IAExC;;OAEG;IACH,YAAqB,OAAO,EAAE,YAAY,EAAI;IAE9C;;;;;OAKG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAKxB;IAED;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAG7B;IAED;;;;;;OAMG;IACH,SAAS,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAGpC;IAED;;OAEG;IACH,IAAI,GAAG,WAEN;IAED;;OAEG;IACH,IAAI,MAAM,cAET;CACF"}
1
+ {"version":3,"file":"queryContext.d.ts","sourceRoot":"","sources":["../../src/dialect/queryContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEnE;;;;;;GAMG;AACH,qBAAa,eAAgB,YAAW,YAAY;IAahD,QAAQ,CAAC,OAAO,EAAE,YAAY;IAZhC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IACnC,OAAO,CAAC,YAAY,CAAK;IAEzB;;;;;;OAMG;IACH,YACW,OAAO,EAAE,YAAY,EAC9B,MAAM,GAAE,OAAO,EAAO,EAGvB;IAED;;;;;OAKG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAKxB;IAED;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAG7B;IAED;;;;;;OAMG;IACH,SAAS,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAGpC;IAED;;;;;OAKG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEhC;IAED;;OAEG;IACH,IAAI,GAAG,WAEN;IAED;;OAEG;IACH,IAAI,MAAM,cAET;CACF"}
@@ -8,12 +8,18 @@
8
8
  export class SqlQueryContext {
9
9
  dialect;
10
10
  sqlChunks = [];
11
- params = [];
11
+ params;
12
+ aliasCounter = 0;
12
13
  /**
13
14
  * @param dialect The SQL dialect used to determine how values should be formatted as placeholders.
15
+ * @param params An existing values array to bind into instead of a fresh one - shared by a
16
+ * fragment context built via {@link AbstractSqlDialect.buildFragment}, so a bound value's
17
+ * placeholder is numbered correctly against the real query from the moment it's added, rather
18
+ * than needing to be reconciled after the fact.
14
19
  */
15
- constructor(dialect) {
20
+ constructor(dialect, params = []) {
16
21
  this.dialect = dialect;
22
+ this.params = params;
17
23
  }
18
24
  /**
19
25
  * Appends raw SQL string fragments to the query.
@@ -49,6 +55,15 @@ export class SqlQueryContext {
49
55
  this.params.push(...values.map((v) => this.dialect.normalizeValue(v)));
50
56
  return this;
51
57
  }
58
+ /**
59
+ * A fresh alias unique within this context, e.g. `nextAlias('_uql_elem')` -> `'_uql_elem_1'`,
60
+ * `'_uql_elem_2'`, ... A fragment context (see the constructor) counts independently of the `ctx`
61
+ * it shares values with - fine today since no fragment-building hook also generates aliases, but
62
+ * worth widening (share this counter too, the same way `params` is shared) if one ever does.
63
+ */
64
+ nextAlias(prefix) {
65
+ return `${prefix}_${++this.aliasCounter}`;
66
+ }
52
67
  /**
53
68
  * Returns the complete SQL query string by joining all accumulated chunks.
54
69
  */
@@ -1 +1 @@
1
- {"version":3,"file":"queryContext.js","sourceRoot":"","sources":["../../src/dialect/queryContext.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,OAAO,eAAe;IAOL,OAAO;IANX,SAAS,GAAa,EAAE,CAAC;IACzB,MAAM,GAAc,EAAE,CAAC;IAExC;;OAEG;IACH,YAAqB,OAAqB;uBAArB,OAAO;IAAiB,CAAC;IAE9C;;;;;OAKG;IACH,MAAM,CAAC,GAAW;QAChB,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACH,QAAQ,CAAC,KAAc;QACrB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACH,SAAS,CAAC,GAAG,MAAiB;QAC5B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF"}
1
+ {"version":3,"file":"queryContext.js","sourceRoot":"","sources":["../../src/dialect/queryContext.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,OAAO,eAAe;IAaf,OAAO;IAZD,SAAS,GAAa,EAAE,CAAC;IACzB,MAAM,CAAY;IAC3B,YAAY,GAAG,CAAC,CAAC;IAEzB;;;;;;OAMG;IACH,YACW,OAAqB,EAC9B,MAAM,GAAc,EAAE;uBADb,OAAO;QAGhB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,GAAW;QAChB,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACH,QAAQ,CAAC,KAAc;QACrB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACH,SAAS,CAAC,GAAG,MAAiB;QAC5B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,SAAS,CAAC,MAAc;QACtB,OAAO,GAAG,MAAM,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF"}
@@ -0,0 +1,54 @@
1
+ import { type VectorCast } from '../schema/canonicalType.js';
2
+ import type { EntityMeta, FieldOptions, QueryContext, QueryVectorSearch, VectorDistance } from '../type/index.js';
3
+ import { AbstractDialect } from './abstractDialect.js';
4
+ /**
5
+ * Vector similarity search for SQL dialects: the `ORDER BY <distance>` expression, its projection as
6
+ * a named score, and the index metadata the schema generator reads.
7
+ *
8
+ * A layer of its own because it is nearly self-contained - it needs only `escapeId` from the SQL
9
+ * dialect above it - unlike the JSON operators, which are woven into the generic comparison
10
+ * machinery (`neExpr`, `numericCast`, `formatIn`, ...) and belong with it.
11
+ *
12
+ * Two shapes exist across dialects: an operator (`"col" <=> $1`, Postgres/CockroachDB) or a function
13
+ * call (`VEC_DISTANCE_COSINE(col, ?)`, MariaDB/SQLite). Dialects pick one by either overriding
14
+ * {@link appendVectorSort} or filling {@link vectorDistanceFns}.
15
+ */
16
+ export declare abstract class VectorSqlDialect extends AbstractDialect {
17
+ /** Vector index operator classes, keyed by distance metric. Partial: not every dialect supports every metric. */
18
+ readonly vectorOpsClass: ReadonlyMap<VectorDistance, string> | undefined;
19
+ readonly vectorExtension: string | undefined;
20
+ /**
21
+ * Mapping of UQL vector distance metrics to native SQL functions.
22
+ * Override in dialects that use function-call syntax (e.g. SQLite, MariaDB).
23
+ * Dialects with operator-based syntax (e.g. Postgres) leave this empty and override `appendVectorSort` directly.
24
+ */
25
+ protected readonly vectorDistanceFns: ReadonlyMap<VectorDistance, string>;
26
+ /** Quotes an identifier; supplied by the SQL dialect built on top of this layer. */
27
+ abstract escapeId(val: string, forbidQualified?: boolean, addDot?: boolean): string;
28
+ /**
29
+ * Resolve common parameters for a vector similarity ORDER BY expression.
30
+ * Shared by all dialect overrides of `appendVectorSort`.
31
+ */
32
+ protected resolveVectorSortParams<E>(meta: EntityMeta<E>, key: string, search: QueryVectorSearch): {
33
+ colName: string;
34
+ distance: VectorDistance;
35
+ field: FieldOptions | undefined;
36
+ vectorCast: VectorCast;
37
+ };
38
+ /**
39
+ * Append a vector similarity function call: `fn(col, ?)`.
40
+ * Used by dialects that express vector distance via SQL functions (SQLite, MariaDB).
41
+ */
42
+ protected appendFunctionVectorSort<E>(ctx: QueryContext, meta: EntityMeta<E>, key: string, search: QueryVectorSearch): void;
43
+ /**
44
+ * Append a vector distance projection.
45
+ * Delegates to `appendVectorSort` so each dialect's distance syntax is written once.
46
+ */
47
+ protected appendVectorProjection<E>(ctx: QueryContext, meta: EntityMeta<E>, key: string, search: QueryVectorSearch): void;
48
+ /**
49
+ * Append a vector similarity expression for `ORDER BY`.
50
+ * Default: auto-delegates to `appendFunctionVectorSort` when `vectorDistanceFns` has entries.
51
+ */
52
+ protected appendVectorSort<E>(ctx: QueryContext, meta: EntityMeta<E>, key: string, search: QueryVectorSearch): void;
53
+ }
54
+ //# sourceMappingURL=vectorSqlDialect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vectorSqlDialect.d.ts","sourceRoot":"","sources":["../../src/dialect/vectorSqlDialect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,KAAK,EACV,UAAU,EAEV,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;;;;;;;GAWG;AACH,8BAAsB,gBAAiB,SAAQ,eAAe;IAC5D,iHAAiH;IACjH,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,SAAS,CAAa;IAErF,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,CAAa;IAEzD;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,WAAW,CAAC,cAAc,EAAE,MAAM,CAAC,CAAa;IAEtF,oFAAoF;IACpF,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAEpF;;;OAGG;IACH,SAAS,CAAC,uBAAuB,CAAC,CAAC,EACjC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EACnB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,iBAAiB,GACxB;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,cAAc,CAAC;QAAC,KAAK,EAAE,YAAY,GAAG,SAAS,CAAC;QAAC,UAAU,EAAE,UAAU,CAAA;KAAE,CAMxG;IAED;;;OAGG;IACH,SAAS,CAAC,wBAAwB,CAAC,CAAC,EAClC,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EACnB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,iBAAiB,GACxB,IAAI,CASN;IAED;;;OAGG;IACH,SAAS,CAAC,sBAAsB,CAAC,CAAC,EAChC,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EACnB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,iBAAiB,GACxB,IAAI,CAGN;IAED;;;OAGG;IACH,SAAS,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAMlH;CACF"}