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
@@ -0,0 +1,70 @@
1
+ import { resolveVectorCast } from '../schema/canonicalType.js';
2
+ import { AbstractDialect } from './abstractDialect.js';
3
+ /**
4
+ * Vector similarity search for SQL dialects: the `ORDER BY <distance>` expression, its projection as
5
+ * a named score, and the index metadata the schema generator reads.
6
+ *
7
+ * A layer of its own because it is nearly self-contained - it needs only `escapeId` from the SQL
8
+ * dialect above it - unlike the JSON operators, which are woven into the generic comparison
9
+ * machinery (`neExpr`, `numericCast`, `formatIn`, ...) and belong with it.
10
+ *
11
+ * Two shapes exist across dialects: an operator (`"col" <=> $1`, Postgres/CockroachDB) or a function
12
+ * call (`VEC_DISTANCE_COSINE(col, ?)`, MariaDB/SQLite). Dialects pick one by either overriding
13
+ * {@link appendVectorSort} or filling {@link vectorDistanceFns}.
14
+ */
15
+ export class VectorSqlDialect extends AbstractDialect {
16
+ /** Vector index operator classes, keyed by distance metric. Partial: not every dialect supports every metric. */
17
+ vectorOpsClass = undefined;
18
+ vectorExtension = undefined;
19
+ /**
20
+ * Mapping of UQL vector distance metrics to native SQL functions.
21
+ * Override in dialects that use function-call syntax (e.g. SQLite, MariaDB).
22
+ * Dialects with operator-based syntax (e.g. Postgres) leave this empty and override `appendVectorSort` directly.
23
+ */
24
+ vectorDistanceFns = new Map();
25
+ /**
26
+ * Resolve common parameters for a vector similarity ORDER BY expression.
27
+ * Shared by all dialect overrides of `appendVectorSort`.
28
+ */
29
+ resolveVectorSortParams(meta, key, search) {
30
+ const field = meta.fields[key];
31
+ const colName = this.resolveColumnName(key, field);
32
+ const distance = search.$distance ?? field?.distance ?? 'cosine';
33
+ const vectorCast = resolveVectorCast(field);
34
+ return { colName, distance, field, vectorCast };
35
+ }
36
+ /**
37
+ * Append a vector similarity function call: `fn(col, ?)`.
38
+ * Used by dialects that express vector distance via SQL functions (SQLite, MariaDB).
39
+ */
40
+ appendFunctionVectorSort(ctx, meta, key, search) {
41
+ const { colName, distance } = this.resolveVectorSortParams(meta, key, search);
42
+ const fn = this.vectorDistanceFns.get(distance);
43
+ if (!fn) {
44
+ throw Error(`${this.dialectName} does not support vector distance metric: ${distance}`);
45
+ }
46
+ ctx.append(`${fn}(${this.escapeId(colName)}, `);
47
+ ctx.addValue(`[${search.$vector.join(',')}]`);
48
+ ctx.append(')');
49
+ }
50
+ /**
51
+ * Append a vector distance projection.
52
+ * Delegates to `appendVectorSort` so each dialect's distance syntax is written once.
53
+ */
54
+ appendVectorProjection(ctx, meta, key, search) {
55
+ this.appendVectorSort(ctx, meta, key, search);
56
+ ctx.append(` AS ${this.escapeId(search.$project)}`);
57
+ }
58
+ /**
59
+ * Append a vector similarity expression for `ORDER BY`.
60
+ * Default: auto-delegates to `appendFunctionVectorSort` when `vectorDistanceFns` has entries.
61
+ */
62
+ appendVectorSort(ctx, meta, key, search) {
63
+ if (this.vectorDistanceFns.size > 0) {
64
+ this.appendFunctionVectorSort(ctx, meta, key, search);
65
+ return;
66
+ }
67
+ throw new TypeError('Vector similarity sort is not supported by this dialect. Use raw() for vector queries.');
68
+ }
69
+ }
70
+ //# sourceMappingURL=vectorSqlDialect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vectorSqlDialect.js","sourceRoot":"","sources":["../../src/dialect/vectorSqlDialect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAmB,MAAM,4BAA4B,CAAC;AAShF,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;;;;;;;GAWG;AACH,MAAM,OAAgB,gBAAiB,SAAQ,eAAe;IAC5D,iHAAiH;IACxG,cAAc,GAAoD,SAAS,CAAC;IAE5E,eAAe,GAAuB,SAAS,CAAC;IAEzD;;;;OAIG;IACgB,iBAAiB,GAAwC,IAAI,GAAG,EAAE,CAAC;IAKtF;;;OAGG;IACO,uBAAuB,CAC/B,IAAmB,EACnB,GAAW,EACX,MAAyB;QAEzB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAkB,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,IAAI,KAAK,EAAE,QAAQ,IAAI,QAAQ,CAAC;QACjE,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC5C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IAClD,CAAC;IAED;;;OAGG;IACO,wBAAwB,CAChC,GAAiB,EACjB,IAAmB,EACnB,GAAW,EACX,MAAyB;QAEzB,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QAC9E,MAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,WAAW,6CAA6C,QAAQ,EAAE,CAAC,CAAC;QAC1F,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChD,GAAG,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC;IAED;;;OAGG;IACO,sBAAsB,CAC9B,GAAiB,EACjB,IAAmB,EACnB,GAAW,EACX,MAAyB;QAEzB,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QAC9C,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAS,CAAC,EAAE,CAAC,CAAC;IACvD,CAAC;IAED;;;OAGG;IACO,gBAAgB,CAAI,GAAiB,EAAE,IAAmB,EAAE,GAAW,EAAE,MAAyB;QAC1G,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,wBAAwB,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;YACtD,OAAO;QACT,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,wFAAwF,CAAC,CAAC;IAChH,CAAC;CACF"}
@@ -1,18 +1,11 @@
1
- import type { IndexType } from '../../schema/types.js';
2
- import type { Type, VectorIndexOptions } from '../../type/index.js';
1
+ import type { DistributiveOmit, EntityIndexMeta, Type } from '../../type/index.js';
3
2
  /**
4
- * Options for the @Index decorator.
3
+ * Options for the @Index decorator - {@link EntityIndexMeta} minus `columns`, which the decorator
4
+ * takes as its own positional argument. `DistributiveOmit` (not plain `Omit`) keeps `type`/`distance`
5
+ * a discriminated pair - `EntityIndexMeta`'s vector-index invariant, that omitting `distance` on a
6
+ * vector index type is a compile error.
5
7
  */
6
- export interface IndexDecoratorOptions extends VectorIndexOptions {
7
- /** Custom index name */
8
- name?: string;
9
- /** Whether index is unique */
10
- unique?: boolean;
11
- /** Index type */
12
- type?: IndexType;
13
- /** Partial index WHERE clause */
14
- where?: string;
15
- }
8
+ export type IndexDecoratorOptions = DistributiveOmit<EntityIndexMeta, 'columns'>;
16
9
  /**
17
10
  * Define a composite index on an entity class.
18
11
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index-decorator.d.ts","sourceRoot":"","sources":["../../../src/entity/decorator/index-decorator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAGpE;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB;IAC/D,wBAAwB;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,iBAAiB;IACjB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,qBAA0B,YAC7D,IAAI,CAAC,CAAC,CAAC,KAAG,IAAI,CAG/B"}
1
+ {"version":3,"file":"index-decorator.d.ts","sourceRoot":"","sources":["../../../src/entity/decorator/index-decorator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAGnF;;;;;GAKG;AACH,MAAM,MAAM,qBAAqB,GAAG,gBAAgB,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;AAEjF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,qBAA0B,YAC7D,IAAI,CAAC,CAAC,CAAC,KAAG,IAAI,CAG/B"}
@@ -1 +1 @@
1
- {"version":3,"file":"index-decorator.js","sourceRoot":"","sources":["../../../src/entity/decorator/index-decorator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAgBxD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,KAAK,CAAI,OAAiB,EAAE,OAAO,GAA0B,EAAE;IAC7E,OAAO,CAAC,MAAe,EAAQ,EAAE;QAC/B,WAAW,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"index-decorator.js","sourceRoot":"","sources":["../../../src/entity/decorator/index-decorator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAUxD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,KAAK,CAAI,OAAiB,EAAE,OAAO,GAA0B,EAAE;IAC7E,OAAO,CAAC,MAAe,EAAQ,EAAE;QAC/B,WAAW,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAC;AACJ,CAAC"}
@@ -30,7 +30,11 @@ export type HookContext<E extends object, Ctx = unknown> = {
30
30
  readonly op: CrudOperation;
31
31
  readonly method: HttpMethod;
32
32
  /**
33
- * parsed query - mutate in place or reassign to enforce filters (tenant scoping, row-level rules).
33
+ * parsed query - mutate in place or reassign to shape it (e.g. force a `$select`, inject a
34
+ * `$sort`). For actual tenant/row-level scoping, prefer `@Filter(..., { security: true })` on
35
+ * the entity instead: unlike a hook mutation, it is AND-merged (a client `$where` on the same
36
+ * key cannot silently win), fails closed when its context is missing, and applies uniformly
37
+ * across every query path including joined relations.
34
38
  */
35
39
  query: Query<E>;
36
40
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/http/handler.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,UAAU,EAGV,KAAK,EAEL,IAAI,EAEJ,UAAU,EACX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,UAAU,EAEf,KAAK,sBAAsB,EAE5B,MAAM,eAAe,CAAC;AAGvB;;;GAGG;AACH,MAAM,MAAM,cAAc,CAAC,GAAG,GAAG,OAAO,IAAI;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC;;OAEG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB,CAAC;AAWF,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,GAAG,OAAO,IAAI;IACzD,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAC7B,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAChB;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,IAAI,CAAC,GAAG,GAAG,OAAO,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAEvG,MAAM,MAAM,YAAY,CAAC,GAAG,GAAG,OAAO,IAAI,CAAC,CAAC,SAAS,MAAM,EACzD,GAAG,EAAE,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,EACxB,QAAQ,EAAE,sBAAsB,CAAC,OAAO,CAAC,KACtC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B,MAAM,MAAM,qBAAqB,CAAC,GAAG,GAAG,OAAO,IAAI;IAEjD,OAAO,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAEtB,OAAO,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACtB;;;OAGG;IACH,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB;;OAEG;IACH,OAAO,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACpB;;OAEG;IACH,SAAS,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACtB;;;;OAIG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;IACzB;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;CACzF,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,cAAc,CAAC,GAAG,GAAG,OAAO,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,eAAe,CAAC,GAAG,SAAS,CAAC;AAE/G,wBAAgB,oBAAoB,CAAC,GAAG,GAAG,OAAO,EAAE,IAAI,GAAE,qBAAqB,CAAC,GAAG,CAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CA8I9G"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/http/handler.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,UAAU,EAGV,KAAK,EAEL,IAAI,EAEJ,UAAU,EACX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,UAAU,EAEf,KAAK,sBAAsB,EAE5B,MAAM,eAAe,CAAC;AAGvB;;;GAGG;AACH,MAAM,MAAM,cAAc,CAAC,GAAG,GAAG,OAAO,IAAI;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC;;OAEG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB,CAAC;AAWF,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,GAAG,OAAO,IAAI;IACzD,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAC7B,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B;;;;;;OAMG;IACH,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAChB;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,IAAI,CAAC,GAAG,GAAG,OAAO,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAEvG,MAAM,MAAM,YAAY,CAAC,GAAG,GAAG,OAAO,IAAI,CAAC,CAAC,SAAS,MAAM,EACzD,GAAG,EAAE,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,EACxB,QAAQ,EAAE,sBAAsB,CAAC,OAAO,CAAC,KACtC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B,MAAM,MAAM,qBAAqB,CAAC,GAAG,GAAG,OAAO,IAAI;IAEjD,OAAO,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAEtB,OAAO,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACtB;;;OAGG;IACH,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB;;OAEG;IACH,OAAO,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACpB;;OAEG;IACH,SAAS,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACtB;;;;OAIG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;IACzB;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;CACzF,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,cAAc,CAAC,GAAG,GAAG,OAAO,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,eAAe,CAAC,GAAG,SAAS,CAAC;AAE/G,wBAAgB,oBAAoB,CAAC,GAAG,GAAG,OAAO,EAAE,IAAI,GAAE,qBAAqB,CAAC,GAAG,CAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CA8I9G"}
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/http/handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/http/handler.ts"],"names":[],"mappings":"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"}
@@ -3,14 +3,25 @@ import { MysqlLikeSqlDialect } from '../dialect/mysqlLikeSqlDialect.js';
3
3
  import type { QueryConflictPaths, QueryContext, QueryOptions, Type, VectorDistance } from '../type/index.js';
4
4
  export declare class MariaDialect extends MysqlLikeSqlDialect {
5
5
  readonly dialectName = "mariadb";
6
- readonly serialPrimaryKey = "BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY";
7
6
  readonly insertIdSource = "returning";
8
7
  constructor(options?: DialectOptions);
9
8
  insert<E>(ctx: QueryContext, entity: Type<E>, payload: E | E[], opts?: QueryOptions): void;
10
9
  upsert<E>(ctx: QueryContext, entity: Type<E>, conflictPaths: QueryConflictPaths<E>, payload: E | E[]): void;
11
- protected getJsonPathScalarExpr(escapedColumn: string, jsonPath: string): string;
12
- /** MariaDB does not support CAST(val AS JSON). We use JSON_EXTRACT to convert string to JSON. */
13
- protected getJsonCastExpr(): string;
10
+ /**
11
+ * MariaDB supports neither MySQL's `->`/`->>` shorthand nor the base's chained form. `JSON_VALUE`
12
+ * reads a scalar and `JSON_EXTRACT` the subtree that the array operators need.
13
+ */
14
+ protected getJsonPathScalarExpr(escapedColumn: string, jsonPathStr: string): string;
15
+ protected getJsonPathJsonbExpr(escapedColumn: string, jsonPathStr: string): string;
16
+ /** MariaDB has no `CAST(val AS JSON)`; `JSON_EXTRACT` at the root reads a value as JSON. */
17
+ protected jsonCast(operand: string): string;
18
+ /**
19
+ * MariaDB stores JSON as text, so JSON_ARRAYAGG would re-quote each element into a string
20
+ * (`["\"a\""]`). JSON_COMPACT marks it back as JSON, keeping element types intact.
21
+ */
22
+ protected jsonPullElem(alias: string): string;
23
+ /** Text-backed JSON compares as text, so use JSON_EQUALS for key-order-independent equality. */
24
+ protected jsonPullKeep(alias: string, operand: string): string;
14
25
  /** MariaDB 11.7+ vector distance functions. */
15
26
  protected readonly vectorDistanceFns: ReadonlyMap<VectorDistance, string>;
16
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mariaDialect.d.ts","sourceRoot":"","sources":["../../src/maria/mariaDialect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAExE,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAE7G,qBAAa,YAAa,SAAQ,mBAAmB;IACnD,SAAkB,WAAW,aAAa;IAE1C,SAAkB,gBAAgB,gDAAgD;IAGlF,SAAkB,cAAc,eAAe;IAE/C,YAAY,OAAO,GAAE,cAAmB,EAQvC;IAEQ,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI,CAGlG;IAEQ,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAuBnH;IAED,UAAmB,qBAAqB,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQxF;IAED,iGAAiG;IACjG,UAAmB,eAAe,IAAI,MAAM,CAE3C;IAED,+CAA+C;IAC/C,mBAA4B,iBAAiB,EAAE,WAAW,CAAC,cAAc,EAAE,MAAM,CAAC,CAG/E;CACJ"}
1
+ {"version":3,"file":"mariaDialect.d.ts","sourceRoot":"","sources":["../../src/maria/mariaDialect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAEpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAExE,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAE7G,qBAAa,YAAa,SAAQ,mBAAmB;IACnD,SAAkB,WAAW,aAAa;IAG1C,SAAkB,cAAc,eAAe;IAE/C,YAAY,OAAO,GAAE,cAAmB,EAQvC;IAEQ,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI,CAGlG;IAEQ,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAuBnH;IAED;;;OAGG;IACH,UAAmB,qBAAqB,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAE3F;IAED,UAAmB,oBAAoB,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAE1F;IAED,4FAA4F;IAC5F,UAAmB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnD;IAED;;;OAGG;IACH,UAAmB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAErD;IAED,gGAAgG;IAChG,UAAmB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEtE;IAED,+CAA+C;IAC/C,mBAA4B,iBAAiB,EAAE,WAAW,CAAC,cAAc,EAAE,MAAM,CAAC,CAG/E;CACJ"}
@@ -1,8 +1,8 @@
1
+ import { jsonPath } from '../dialect/jsonSql.js';
1
2
  import { MysqlLikeSqlDialect } from '../dialect/mysqlLikeSqlDialect.js';
2
3
  import { getMeta } from '../entity/index.js';
3
4
  export class MariaDialect extends MysqlLikeSqlDialect {
4
5
  dialectName = 'mariadb';
5
- serialPrimaryKey = 'BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY';
6
6
  // MariaDB 10.5+ supports `INSERT ... RETURNING` (see `insert` below), so IDs are exact per row.
7
7
  insertIdSource = 'returning';
8
8
  constructor(options = {}) {
@@ -36,18 +36,30 @@ export class MariaDialect extends MysqlLikeSqlDialect {
36
36
  ctx.pushValue(...insertCtx.values);
37
37
  }
38
38
  }
39
- getJsonPathScalarExpr(escapedColumn, jsonPath) {
40
- const escapedPath = jsonPath
41
- .split('.')
42
- .map((segment) => this.escapeJsonKey(segment))
43
- .join('.');
44
- // MariaDB does not support MySQL's -> / ->> JSON shorthand operators.
45
- // JSON_VALUE keeps dot-notation access native and portable across MariaDB versions.
46
- return `JSON_VALUE(${escapedColumn}, '$.${escapedPath}')`;
47
- }
48
- /** MariaDB does not support CAST(val AS JSON). We use JSON_EXTRACT to convert string to JSON. */
49
- getJsonCastExpr() {
50
- return "JSON_EXTRACT(?, '$')";
39
+ /**
40
+ * MariaDB supports neither MySQL's `->`/`->>` shorthand nor the base's chained form. `JSON_VALUE`
41
+ * reads a scalar and `JSON_EXTRACT` the subtree that the array operators need.
42
+ */
43
+ getJsonPathScalarExpr(escapedColumn, jsonPathStr) {
44
+ return `JSON_VALUE(${escapedColumn}, ${jsonPath(jsonPathStr)})`;
45
+ }
46
+ getJsonPathJsonbExpr(escapedColumn, jsonPathStr) {
47
+ return `JSON_EXTRACT(${escapedColumn}, ${jsonPath(jsonPathStr)})`;
48
+ }
49
+ /** MariaDB has no `CAST(val AS JSON)`; `JSON_EXTRACT` at the root reads a value as JSON. */
50
+ jsonCast(operand) {
51
+ return `JSON_EXTRACT(${operand}, '$')`;
52
+ }
53
+ /**
54
+ * MariaDB stores JSON as text, so JSON_ARRAYAGG would re-quote each element into a string
55
+ * (`["\"a\""]`). JSON_COMPACT marks it back as JSON, keeping element types intact.
56
+ */
57
+ jsonPullElem(alias) {
58
+ return `JSON_COMPACT(${alias}.v)`;
59
+ }
60
+ /** Text-backed JSON compares as text, so use JSON_EQUALS for key-order-independent equality. */
61
+ jsonPullKeep(alias, operand) {
62
+ return `NOT JSON_EQUALS(${alias}.v, ${operand})`;
51
63
  }
52
64
  /** MariaDB 11.7+ vector distance functions. */
53
65
  vectorDistanceFns = new Map([
@@ -1 +1 @@
1
- {"version":3,"file":"mariaDialect.js","sourceRoot":"","sources":["../../src/maria/mariaDialect.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAG7C,MAAM,OAAO,YAAa,SAAQ,mBAAmB;IACjC,WAAW,GAAG,SAAS,CAAC;IAExB,gBAAgB,GAAG,4CAA4C,CAAC;IAElF,gGAAgG;IAC9E,cAAc,GAAG,WAAW,CAAC;IAE/C,YAAY,OAAO,GAAmB,EAAE;QACtC,KAAK,CAAC;YACJ,GAAG,OAAO;YACV,kBAAkB,EAAE;gBAClB,oBAAoB,EAAE,IAAI;gBAC1B,GAAG,OAAO,CAAC,kBAAkB;aAC9B;SACF,CAAC,CAAC;IACL,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,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAC5C,SAAS,EACT,IAAI,EACJ,aAAa,EACb,OAAO,EACP,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,IAAI,GAAG,CAC5B,CAAC;QACF,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAE3C,IAAI,MAAM,EAAE,CAAC;YACX,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YACnC,GAAG,CAAC,MAAM,CAAC,4BAA4B,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC;YAC9D,GAAG,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACvC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YACzC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC;YAC9D,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;YAC5B,GAAG,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAEkB,qBAAqB,CAAC,aAAqB,EAAE,QAAgB;QAC9E,MAAM,WAAW,GAAG,QAAQ;aACzB,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;aAC7C,IAAI,CAAC,GAAG,CAAC,CAAC;QACb,sEAAsE;QACtE,oFAAoF;QACpF,OAAO,cAAc,aAAa,QAAQ,WAAW,IAAI,CAAC;IAC5D,CAAC;IAED,iGAAiG;IAC9E,eAAe;QAChC,OAAO,sBAAsB,CAAC;IAChC,CAAC;IAED,+CAA+C;IACnB,iBAAiB,GAAwC,IAAI,GAAG,CAAC;QAC3F,CAAC,QAAQ,EAAE,qBAAqB,CAAC;QACjC,CAAC,IAAI,EAAE,wBAAwB,CAAC;KACjC,CAAC,CAAC;CACJ"}
1
+ {"version":3,"file":"mariaDialect.js","sourceRoot":"","sources":["../../src/maria/mariaDialect.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ import type { TableDefinition } from '../builder/types.js';
5
5
  export declare class MongoSchemaGenerator extends AbstractDialect implements SchemaGenerator {
6
6
  protected readonly defaultForeignKeyAction?: ForeignKeyAction | undefined;
7
7
  readonly dialectName = "mongodb";
8
- protected readonly featureDefaults: import("../../type/query.js").DialectFeatures;
8
+ protected readonly featureDefaults: import("../../type/dialect.js").DialectFeatures;
9
9
  readonly insertIdSource: InsertIdSource;
10
10
  constructor(namingStrategy?: NamingStrategy, defaultForeignKeyAction?: ForeignKeyAction | undefined);
11
11
  generateCreateTable<E>(entity: Type<E>, _options?: {
@@ -1 +1 @@
1
- {"version":3,"file":"mongoSchemaGenerator.d.ts","sourceRoot":"","sources":["../../../src/migrate/generator/mongoSchemaGenerator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mongoSchemaGenerator.d.ts","sourceRoot":"","sources":["../../../src/migrate/generator/mongoSchemaGenerator.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { type Document, type Filter, ObjectId, type Sort } from 'mongodb';
1
+ import { type Document, type Filter, ObjectId, type Sort, type UpdateFilter } from 'mongodb';
2
2
  import { AbstractDialect } from '../dialect/abstractDialect.js';
3
3
  import type { DialectFeatures, EntityMeta, FieldValue, Query, QueryAggMap, QueryAggregate, QueryExclude, QueryGroupMap, QueryOptions, QuerySelectValue, QuerySortMap, QueryVectorSearch, QueryWhere, RelationKey, Type } from '../type/index.js';
4
4
  import { type CallbackKey, type RelationRequestSummary } from '../util/index.js';
@@ -14,10 +14,6 @@ export declare class MongoDialect extends AbstractDialect {
14
14
  where<E extends Document>(entity: Type<E>, where?: QueryWhere<E>, opts?: QueryOptions): Filter<E>;
15
15
  /** Renders a `$where` tree without applying entity filters (used for same-scope `$and`/`$or` recursion). */
16
16
  private renderFilter;
17
- /**
18
- * Check if an object has operator keys (keys starting with $).
19
- */
20
- private hasOperatorKeys;
21
17
  protected mapTableNameRow(row: {
22
18
  table_name: string;
23
19
  }): string;
@@ -29,6 +25,11 @@ export declare class MongoDialect extends AbstractDialect {
29
25
  * Transform UQL operators to MongoDB operators.
30
26
  */
31
27
  private transformOperators;
28
+ /**
29
+ * Maps the conditions inside `$elemMatch`: an operator map applies to the element itself, anything
30
+ * else is a per-field map whose operator objects each need mapping.
31
+ */
32
+ private transformElemMatch;
32
33
  select<E extends Document>(entity: Type<E>, select?: QuerySelectValue<E>, exclude?: QueryExclude<E>): Record<string, 1>;
33
34
  sort<E extends Document>(entity: Type<E>, sort?: QuerySortMap<E>): Sort;
34
35
  aggregationPipeline<E extends Document>(entity: Type<E>, q: Query<E>, relationSummary?: RelationRequestSummary<E>, opts?: QueryOptions): MongoAggregationPipelineEntry<E>[];
@@ -36,6 +37,26 @@ export declare class MongoDialect extends AbstractDialect {
36
37
  normalizeId<E extends Document>(meta: EntityMeta<E>, doc: E | undefined): E | undefined;
37
38
  getIdValue<T extends IdValue>(value: T): T;
38
39
  getPersistable<E extends Document>(meta: EntityMeta<E>, payload: E, callbackKey: CallbackKey): Partial<E>;
40
+ /** One MongoDB update document's operators, grouped by kind and keyed by dotted path. */
41
+ private groupUpdateOperators;
42
+ /**
43
+ * Turn a persistable payload into a MongoDB update, mapping UQL's JSON operators onto their native
44
+ * equivalents: `$set` becomes dotted-path assignments, `$unset`/`$push`/`$pull` map one-to-one.
45
+ * Plain field values are assigned with `$set`.
46
+ */
47
+ getUpdateFilter<E extends Document>(persistable: Partial<E>): UpdateFilter<E> | Document[];
48
+ /**
49
+ * MongoDB rejects two operators targeting one path in a single update document, so any path shared
50
+ * across operator groups is expressed as one aggregation-pipeline update instead.
51
+ *
52
+ * Each path's expression is composed in the same order stated on {@link JsonUpdateOp} (`$pull` ->
53
+ * `$set` -> `$push` -> `$unset`), so every combination yields the identical result: a `$pull`
54
+ * filters the stored array, a `$set` on the same path then replaces it outright, and a `$push`
55
+ * appends to whatever those produced. `$unset` is a later stage, so it wins over a `$set` on the
56
+ * same path - again matching SQL, where it is the outermost wrapper. Values are wrapped in
57
+ * `$literal` so a string starting with `$` stays data rather than becoming a field reference.
58
+ */
59
+ private getUpdatePipeline;
39
60
  getPersistables<E extends Document>(meta: EntityMeta<E>, payload: E | E[], callbackKey: CallbackKey): Partial<E>[];
40
61
  /**
41
62
  * Build MongoDB aggregation pipeline stages from a QueryAggregate.
@@ -57,7 +78,7 @@ export declare class MongoDialect extends AbstractDialect {
57
78
  * Build a `$vectorSearch` aggregation pipeline stage.
58
79
  * Merges `$where` into `$vectorSearch.filter` for optimal pre-filtering.
59
80
  */
60
- buildVectorSearchStage<E extends Document>(entity: Type<E>, meta: EntityMeta<E>, key: string, search: QueryVectorSearch, where: QueryWhere<E> | undefined, limit: number, opts?: QueryOptions): Record<string, unknown>;
81
+ buildVectorSearchStage<E extends Document>(entity: Type<E>, key: string, search: QueryVectorSearch, where: QueryWhere<E> | undefined, limit: number, opts?: QueryOptions): Record<string, unknown>;
61
82
  }
62
83
  export type MongoAggregationPipelineEntry<E extends Document> = {
63
84
  $lookup?: MongoAggregationLookup<E>;
@@ -1 +1 @@
1
- {"version":3,"file":"mongoDialect.d.ts","sourceRoot":"","sources":["../../src/mongo/mongoDialect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mongoDialect.d.ts","sourceRoot":"","sources":["../../src/mongo/mongoDialect.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { ObjectId } from 'mongodb';
2
2
  import { AbstractDialect } from '../dialect/abstractDialect.js';
3
3
  import { getMeta } from '../entity/index.js';
4
- import { applyFilters, asSelectMap, buildQueryWhereAsMap, buildSortMap, fillOnFields, filterFieldKeys, getKeys, getRelationRequestSummary, hasKeys, isVectorSearch, normalizeScalarFieldSelection, parseGroupMap, someKey, } from '../util/index.js';
4
+ import { applyFilters, asSelectMap, buildQueryWhereAsMap, buildSortMap, fillOnFields, filterFieldKeys, getKeys, getRelationRequestSummary, hasKeys, isJsonUpdateOp, isOperatorObject, isVectorSearch, normalizeScalarFieldSelection, parseGroupMap, } from '../util/index.js';
5
5
  /** Default {@link DialectFeatures} for MongoDB; shared by {@link MongoDialect} and its schema generator. */
6
6
  export const mongoDialectFeatures = {
7
7
  explicitJsonCast: false,
@@ -59,10 +59,7 @@ export class MongoDialect extends AbstractDialect {
59
59
  else if (field) {
60
60
  key = this.resolveColumnName(key, field);
61
61
  }
62
- if (val &&
63
- typeof val === 'object' &&
64
- !Array.isArray(val) &&
65
- this.hasOperatorKeys(val)) {
62
+ if (isOperatorObject(val)) {
66
63
  val = this.transformOperators(val);
67
64
  }
68
65
  else if (Array.isArray(val)) {
@@ -73,12 +70,6 @@ export class MongoDialect extends AbstractDialect {
73
70
  }
74
71
  return filter;
75
72
  }
76
- /**
77
- * Check if an object has operator keys (keys starting with $).
78
- */
79
- hasOperatorKeys(obj) {
80
- return someKey(obj, (key) => key.startsWith('$'));
81
- }
82
73
  mapTableNameRow(row) {
83
74
  return row.table_name;
84
75
  }
@@ -115,6 +106,13 @@ export class MongoDialect extends AbstractDialect {
115
106
  transformOperators(ops) {
116
107
  const result = {};
117
108
  for (const [op, val] of Object.entries(ops)) {
109
+ // `$elemMatch`'s value is itself a condition, so the operators inside it need the same
110
+ // mapping - passing it through raw sends UQL-only operators (`$startsWith`, `$between`, ...)
111
+ // straight to the server, which rejects them as unknown.
112
+ if (op === '$elemMatch') {
113
+ result[op] = this.transformElemMatch(val);
114
+ continue;
115
+ }
118
116
  // Native MongoDB operators - pass through directly
119
117
  if (MongoDialect.NATIVE_OPS.has(op)) {
120
118
  result[op] = val;
@@ -152,6 +150,16 @@ export class MongoDialect extends AbstractDialect {
152
150
  }
153
151
  return result;
154
152
  }
153
+ /**
154
+ * Maps the conditions inside `$elemMatch`: an operator map applies to the element itself, anything
155
+ * else is a per-field map whose operator objects each need mapping.
156
+ */
157
+ transformElemMatch(match) {
158
+ if (isOperatorObject(match)) {
159
+ return this.transformOperators(match);
160
+ }
161
+ return Object.fromEntries(Object.entries(match).map(([field, val]) => [field, isOperatorObject(val) ? this.transformOperators(val) : val]));
162
+ }
155
163
  select(entity, select, exclude) {
156
164
  const meta = getMeta(entity);
157
165
  if (!select && !exclude) {
@@ -200,6 +208,10 @@ export class MongoDialect extends AbstractDialect {
200
208
  }
201
209
  const relEntity = relOpts.entity();
202
210
  const relMeta = getMeta(relEntity);
211
+ // Unconditional, not gated by an explicit relation-level `$where`: the related entity's own
212
+ // filters (in particular `security: true` ones) must apply even to a bare
213
+ // `$populate: { rel: true }`, exactly like the SQL dialects' JOIN ON-clause filters.
214
+ const relationFilter = this.where(relEntity, {}, opts);
203
215
  if (relOpts.cardinality === 'm1') {
204
216
  const localField = meta.fields[relOpts.references[0].local];
205
217
  pipeline.push({
@@ -207,6 +219,9 @@ export class MongoDialect extends AbstractDialect {
207
219
  from: this.resolveTableName(relEntity, relMeta),
208
220
  localField: this.resolveColumnName(relOpts.references[0].local, localField),
209
221
  foreignField: '_id',
222
+ // MongoDB runs `pipeline` after its own localField/foreignField match, so the related
223
+ // entity's filters layer on top of the join condition without a `let`/`$expr` rewrite.
224
+ ...(hasKeys(relationFilter) ? { pipeline: [{ $match: relationFilter }] } : {}),
210
225
  as: relKey,
211
226
  },
212
227
  });
@@ -214,11 +229,10 @@ export class MongoDialect extends AbstractDialect {
214
229
  else {
215
230
  const foreignField = relMeta.fields[relOpts.references[0].foreign];
216
231
  const foreignFieldName = this.resolveColumnName(relOpts.references[0].foreign, foreignField);
217
- const referenceWhere = this.where(relEntity, where);
218
232
  const referenceSort = this.sort(relEntity, q.$sort);
219
233
  const _id = MongoDialect.ID_KEY;
220
234
  const referencePipelineEntry = {
221
- $match: { [foreignFieldName]: referenceWhere[_id] },
235
+ $match: { [foreignFieldName]: where[_id], ...relationFilter },
222
236
  };
223
237
  if (hasKeys(referenceSort)) {
224
238
  referencePipelineEntry.$sort = referenceSort;
@@ -284,6 +298,84 @@ export class MongoDialect extends AbstractDialect {
284
298
  getPersistable(meta, payload, callbackKey) {
285
299
  return this.getPersistables(meta, payload, callbackKey)[0];
286
300
  }
301
+ /** One MongoDB update document's operators, grouped by kind and keyed by dotted path. */
302
+ groupUpdateOperators(persistable) {
303
+ const set = {};
304
+ const push = {};
305
+ const pull = {};
306
+ const unset = new Set();
307
+ for (const [key, value] of Object.entries(persistable)) {
308
+ if (!isJsonUpdateOp(value)) {
309
+ set[key] = value;
310
+ continue;
311
+ }
312
+ for (const [path, v] of Object.entries(value.$set ?? {})) {
313
+ set[`${key}.${path}`] = v;
314
+ }
315
+ for (const path of value.$unset ?? []) {
316
+ unset.add(`${key}.${path}`);
317
+ }
318
+ for (const [path, v] of Object.entries(value.$push ?? {})) {
319
+ push[`${key}.${path}`] = v;
320
+ }
321
+ for (const [path, v] of Object.entries(value.$pull ?? {})) {
322
+ pull[`${key}.${path}`] = v;
323
+ }
324
+ }
325
+ return { set, push, pull, unset };
326
+ }
327
+ /**
328
+ * Turn a persistable payload into a MongoDB update, mapping UQL's JSON operators onto their native
329
+ * equivalents: `$set` becomes dotted-path assignments, `$unset`/`$push`/`$pull` map one-to-one.
330
+ * Plain field values are assigned with `$set`.
331
+ */
332
+ getUpdateFilter(persistable) {
333
+ const groups = this.groupUpdateOperators(persistable);
334
+ const { set, push, pull, unset } = groups;
335
+ const exprKeys = [...Object.keys(pull), ...Object.keys(set), ...Object.keys(push)];
336
+ // MongoDB rejects two operators targeting one path in a single update document, so any path
337
+ // reached by more than one operator group forces the pipeline form.
338
+ const allPaths = [...exprKeys, ...unset];
339
+ if (new Set(allPaths).size < allPaths.length) {
340
+ return this.getUpdatePipeline(groups, new Set(exprKeys));
341
+ }
342
+ return {
343
+ ...(hasKeys(set) && { $set: set }),
344
+ ...(hasKeys(push) && { $push: push }),
345
+ ...(hasKeys(pull) && { $pull: pull }),
346
+ ...(unset.size > 0 && { $unset: Object.fromEntries([...unset].map((path) => [path, ''])) }),
347
+ };
348
+ }
349
+ /**
350
+ * MongoDB rejects two operators targeting one path in a single update document, so any path shared
351
+ * across operator groups is expressed as one aggregation-pipeline update instead.
352
+ *
353
+ * Each path's expression is composed in the same order stated on {@link JsonUpdateOp} (`$pull` ->
354
+ * `$set` -> `$push` -> `$unset`), so every combination yields the identical result: a `$pull`
355
+ * filters the stored array, a `$set` on the same path then replaces it outright, and a `$push`
356
+ * appends to whatever those produced. `$unset` is a later stage, so it wins over a `$set` on the
357
+ * same path - again matching SQL, where it is the outermost wrapper. Values are wrapped in
358
+ * `$literal` so a string starting with `$` stays data rather than becoming a field reference.
359
+ */
360
+ getUpdatePipeline({ set, push, pull, unset }, exprPaths) {
361
+ const assignments = {};
362
+ for (const path of exprPaths) {
363
+ let expr = { $ifNull: [`$${path}`, []] };
364
+ if (path in pull) {
365
+ expr = { $filter: { input: expr, cond: { $ne: ['$$this', { $literal: pull[path] }] } } };
366
+ }
367
+ if (path in set) {
368
+ expr = { $literal: set[path] };
369
+ }
370
+ if (path in push) {
371
+ expr = { $concatArrays: [expr, [{ $literal: push[path] }]] };
372
+ }
373
+ // Only `$set` and `$push` create a key. A `$pull` alone has to leave an absent one absent, and
374
+ // `$$REMOVE` is how a pipeline `$set` skips a field - without it the filter would store `[]`.
375
+ assignments[path] = path in set || path in push ? expr : { $cond: [{ $isArray: `$${path}` }, expr, '$$REMOVE'] };
376
+ }
377
+ return [{ $set: assignments }, ...(unset.size > 0 ? [{ $unset: [...unset] }] : [])];
378
+ }
287
379
  getPersistables(meta, payload, callbackKey) {
288
380
  const payloads = fillOnFields(meta, payload, callbackKey);
289
381
  // Keys are resolved per document so heterogeneous payloads keep every provided field.
@@ -422,7 +514,8 @@ export class MongoDialect extends AbstractDialect {
422
514
  * Build a `$vectorSearch` aggregation pipeline stage.
423
515
  * Merges `$where` into `$vectorSearch.filter` for optimal pre-filtering.
424
516
  */
425
- buildVectorSearchStage(entity, meta, key, search, where, limit, opts) {
517
+ buildVectorSearchStage(entity, key, search, where, limit, opts) {
518
+ const meta = getMeta(entity);
426
519
  const field = meta.fields[key];
427
520
  if (!field) {
428
521
  throw new TypeError(`Field '${key}' not found in entity '${meta.name}'`);