uql-orm 0.18.0 → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +77 -0
- package/README.md +3 -3
- package/dist/browser/querier/httpQuerier.d.ts +10 -10
- package/dist/browser/querier/httpQuerier.d.ts.map +1 -1
- package/dist/browser/querier/httpQuerier.js.map +1 -1
- package/dist/browser/type/clientQuerier.d.ts +9 -9
- package/dist/browser/type/clientQuerier.d.ts.map +1 -1
- package/dist/browser/uql-browser.min.js +2 -2
- package/dist/browser/uql-browser.min.js.map +4 -4
- package/dist/bunSql/bunSqlCockroachDialect.d.ts +1 -1
- package/dist/bunSql/bunSqlCockroachDialect.js +1 -1
- package/dist/dialect/abstractSqlDialect.d.ts +113 -51
- package/dist/dialect/abstractSqlDialect.d.ts.map +1 -1
- package/dist/dialect/abstractSqlDialect.js +186 -123
- package/dist/dialect/abstractSqlDialect.js.map +1 -1
- package/dist/dialect/jsonArrayElemMatchUtils.d.ts +5 -6
- package/dist/dialect/jsonArrayElemMatchUtils.d.ts.map +1 -1
- package/dist/dialect/jsonArrayElemMatchUtils.js +9 -19
- package/dist/dialect/jsonArrayElemMatchUtils.js.map +1 -1
- package/dist/dialect/jsonSql.d.ts +24 -0
- package/dist/dialect/jsonSql.d.ts.map +1 -0
- package/dist/dialect/jsonSql.js +37 -0
- package/dist/dialect/jsonSql.js.map +1 -0
- package/dist/dialect/mysqlLikeSqlDialect.d.ts +35 -3
- package/dist/dialect/mysqlLikeSqlDialect.d.ts.map +1 -1
- package/dist/dialect/mysqlLikeSqlDialect.js +64 -18
- package/dist/dialect/mysqlLikeSqlDialect.js.map +1 -1
- package/dist/dialect/pgLikeSqlDialect.d.ts +24 -5
- package/dist/dialect/pgLikeSqlDialect.d.ts.map +1 -1
- package/dist/dialect/pgLikeSqlDialect.js +50 -37
- package/dist/dialect/pgLikeSqlDialect.js.map +1 -1
- package/dist/dialect/vectorSqlDialect.d.ts +54 -0
- package/dist/dialect/vectorSqlDialect.d.ts.map +1 -0
- package/dist/dialect/vectorSqlDialect.js +73 -0
- package/dist/dialect/vectorSqlDialect.js.map +1 -0
- package/dist/entity/decorator/index-decorator.d.ts +6 -13
- package/dist/entity/decorator/index-decorator.d.ts.map +1 -1
- package/dist/entity/decorator/index-decorator.js.map +1 -1
- package/dist/maria/mariaDialect.d.ts +15 -3
- package/dist/maria/mariaDialect.d.ts.map +1 -1
- package/dist/maria/mariaDialect.js +25 -12
- package/dist/maria/mariaDialect.js.map +1 -1
- package/dist/migrate/generator/mongoSchemaGenerator.d.ts +1 -1
- package/dist/migrate/generator/mongoSchemaGenerator.d.ts.map +1 -1
- package/dist/migrate/introspection/abstractSqlSchemaIntrospector.d.ts +2 -1
- package/dist/migrate/introspection/abstractSqlSchemaIntrospector.d.ts.map +1 -1
- package/dist/migrate/introspection/abstractSqlSchemaIntrospector.js +5 -0
- package/dist/migrate/introspection/abstractSqlSchemaIntrospector.js.map +1 -1
- package/dist/migrate/introspection/baseSqlIntrospector.js +1 -1
- package/dist/migrate/introspection/baseSqlIntrospector.js.map +1 -1
- package/dist/migrate/introspection/mysqlIntrospector.d.ts +1 -3
- package/dist/migrate/introspection/mysqlIntrospector.d.ts.map +1 -1
- package/dist/migrate/introspection/mysqlIntrospector.js +0 -5
- package/dist/migrate/introspection/mysqlIntrospector.js.map +1 -1
- package/dist/migrate/introspection/postgresIntrospector.d.ts +1 -3
- package/dist/migrate/introspection/postgresIntrospector.d.ts.map +1 -1
- package/dist/migrate/introspection/postgresIntrospector.js +0 -5
- package/dist/migrate/introspection/postgresIntrospector.js.map +1 -1
- package/dist/migrate/introspection/sqliteIntrospector.d.ts +1 -3
- package/dist/migrate/introspection/sqliteIntrospector.d.ts.map +1 -1
- package/dist/migrate/introspection/sqliteIntrospector.js +0 -5
- package/dist/migrate/introspection/sqliteIntrospector.js.map +1 -1
- package/dist/migrate/schemaGenerator.js +1 -1
- package/dist/migrate/schemaGenerator.js.map +1 -1
- package/dist/mongo/mongoDialect.d.ts +29 -8
- package/dist/mongo/mongoDialect.d.ts.map +1 -1
- package/dist/mongo/mongoDialect.js +101 -12
- package/dist/mongo/mongoDialect.js.map +1 -1
- package/dist/mongo/mongodbQuerier.d.ts +2 -2
- package/dist/mongo/mongodbQuerier.d.ts.map +1 -1
- package/dist/mongo/mongodbQuerier.js +5 -4
- package/dist/mongo/mongodbQuerier.js.map +1 -1
- package/dist/postgres/postgresWireDriverCapabilities.d.ts +1 -1
- package/dist/postgres/postgresWireDriverCapabilities.js +1 -1
- package/dist/querier/abstractQuerier.d.ts +2 -2
- package/dist/querier/abstractQuerier.d.ts.map +1 -1
- package/dist/querier/abstractQuerier.js +6 -5
- package/dist/querier/abstractQuerier.js.map +1 -1
- package/dist/querier/abstractQuerierPool.d.ts +1 -1
- package/dist/querier/abstractQuerierPool.d.ts.map +1 -1
- package/dist/querier/abstractQuerierPool.js.map +1 -1
- package/dist/querier/abstractSqlQuerier.d.ts +2 -2
- package/dist/querier/abstractSqlQuerier.d.ts.map +1 -1
- package/dist/querier/abstractSqlQuerier.js.map +1 -1
- package/dist/querier/decorator/injectQuerier.d.ts +2 -2
- package/dist/querier/decorator/injectQuerier.d.ts.map +1 -1
- package/dist/querier/decorator/injectQuerier.js.map +1 -1
- package/dist/schema/schemaAST.d.ts.map +1 -1
- package/dist/schema/schemaAST.js +7 -19
- package/dist/schema/schemaAST.js.map +1 -1
- package/dist/schema/types.d.ts +1 -1
- package/dist/sqlite/sqliteDialect.d.ts +29 -8
- package/dist/sqlite/sqliteDialect.d.ts.map +1 -1
- package/dist/sqlite/sqliteDialect.js +59 -74
- package/dist/sqlite/sqliteDialect.js.map +1 -1
- package/dist/type/dialect.d.ts +192 -0
- package/dist/type/dialect.d.ts.map +1 -0
- package/dist/type/dialect.js +2 -0
- package/dist/type/dialect.js.map +1 -0
- package/dist/type/entity.d.ts +97 -45
- package/dist/type/entity.d.ts.map +1 -1
- package/dist/type/entity.js.map +1 -1
- package/dist/type/index.d.ts +5 -0
- package/dist/type/index.d.ts.map +1 -1
- package/dist/type/index.js +5 -0
- package/dist/type/index.js.map +1 -1
- package/dist/type/querier.d.ts +4 -3
- package/dist/type/querier.d.ts.map +1 -1
- package/dist/type/querier.js +1 -1
- package/dist/type/querier.js.map +1 -1
- package/dist/type/query.d.ts +19 -668
- package/dist/type/query.d.ts.map +1 -1
- package/dist/type/query.js +1 -51
- package/dist/type/query.js.map +1 -1
- package/dist/type/queryAggregate.d.ts +191 -0
- package/dist/type/queryAggregate.d.ts.map +1 -0
- package/dist/type/queryAggregate.js +39 -0
- package/dist/type/queryAggregate.js.map +1 -0
- package/dist/type/queryRaw.d.ts +35 -0
- package/dist/type/queryRaw.d.ts.map +1 -0
- package/dist/type/queryRaw.js +11 -0
- package/dist/type/queryRaw.js.map +1 -0
- package/dist/type/queryWhere.d.ts +271 -0
- package/dist/type/queryWhere.d.ts.map +1 -0
- package/dist/type/queryWhere.js +2 -0
- package/dist/type/queryWhere.js.map +1 -0
- package/dist/type/universalQuerier.d.ts +3 -2
- package/dist/type/universalQuerier.d.ts.map +1 -1
- package/dist/type/utility.d.ts +16 -2
- package/dist/type/utility.d.ts.map +1 -1
- package/dist/type/vector.d.ts +55 -0
- package/dist/type/vector.d.ts.map +1 -0
- package/dist/type/vector.js +2 -0
- package/dist/type/vector.js.map +1 -0
- package/dist/util/ansiSqlLiteral.d.ts +2 -0
- package/dist/util/ansiSqlLiteral.d.ts.map +1 -1
- package/dist/util/ansiSqlLiteral.js +5 -1
- package/dist/util/ansiSqlLiteral.js.map +1 -1
- package/dist/util/dialect.util.d.ts +14 -2
- package/dist/util/dialect.util.d.ts.map +1 -1
- package/dist/util/dialect.util.js +23 -0
- package/dist/util/dialect.util.js.map +1 -1
- package/dist/util/object.util.d.ts +12 -1
- package/dist/util/object.util.d.ts.map +1 -1
- package/dist/util/object.util.js +18 -0
- package/dist/util/object.util.js.map +1 -1
- package/dist/util/relationQuery.util.js +1 -1
- package/dist/util/relationQuery.util.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mysqlLikeSqlDialect.js","sourceRoot":"","sources":["../../src/dialect/mysqlLikeSqlDialect.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"mysqlLikeSqlDialect.js","sourceRoot":"","sources":["../../src/dialect/mysqlLikeSqlDialect.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type DialectFeatures, type EntityMeta, type FieldOptions, type
|
|
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
|
|
@@ -12,7 +12,7 @@ import { AbstractSqlDialect } from './abstractSqlDialect.js';
|
|
|
12
12
|
export declare abstract class PgLikeSqlDialect extends AbstractSqlDialect {
|
|
13
13
|
/** Default {@link DialectFeatures} for Postgres-wire dialects. */
|
|
14
14
|
protected readonly featureDefaults: DialectFeatures;
|
|
15
|
-
readonly
|
|
15
|
+
readonly escapeIdChar = "\"";
|
|
16
16
|
readonly serialPrimaryKey: string;
|
|
17
17
|
readonly tableOptions = "";
|
|
18
18
|
readonly beginTransactionCommand = "BEGIN";
|
|
@@ -34,18 +34,37 @@ export declare abstract class PgLikeSqlDialect extends AbstractSqlDialect {
|
|
|
34
34
|
* system columns, so it uses the default (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
|
-
/**
|
|
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
|
-
|
|
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[], asJson?: boolean): string;
|
|
50
|
+
protected jsonElemRef(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
|
-
|
|
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
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pgLikeSqlDialect.d.ts","sourceRoot":"","sources":["../../src/dialect/pgLikeSqlDialect.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,YAAY,EAEjB,KAAK,
|
|
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 {
|
|
3
|
+
import { escapeAnsiSqlLiteral, escapeSingleQuotes } from '../util/ansiSqlLiteral.js';
|
|
4
|
+
import { isJsonType } from '../util/index.js';
|
|
5
5
|
import { AbstractSqlDialect } from './abstractSqlDialect.js';
|
|
6
|
-
import {
|
|
6
|
+
import { 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`
|
|
@@ -30,7 +30,7 @@ export class PgLikeSqlDialect extends AbstractSqlDialect {
|
|
|
30
30
|
supportsTimestamptz: true,
|
|
31
31
|
defaultStringAsText: true,
|
|
32
32
|
};
|
|
33
|
-
|
|
33
|
+
escapeIdChar = '"';
|
|
34
34
|
// Shared default for both dialects. CockroachDB docs flag sequential PKs as a hotspotting risk
|
|
35
35
|
// under heavy concurrent insert load (writes concentrate on one range); this default still beats
|
|
36
36
|
// `SERIAL` (CockroachDB's `unique_rowid()`, a ~64-bit value that overflows JS's safe-integer
|
|
@@ -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
|
-
/**
|
|
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
|
-
|
|
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;
|
|
@@ -109,19 +115,19 @@ export class PgLikeSqlDialect extends AbstractSqlDialect {
|
|
|
109
115
|
ctx.pushValue(...tmpCtx.values);
|
|
110
116
|
return tmpCtx.sql;
|
|
111
117
|
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
118
|
+
/**
|
|
119
|
+
* Object elements stay `jsonb` so each field can pick `->` or `->>`. Scalar elements are exploded
|
|
120
|
+
* as text unless they are compared as JSON, where `_text` would yield `text = jsonb`.
|
|
121
|
+
*/
|
|
122
|
+
jsonElemFrom(jsonField, fields, asJson = false) {
|
|
123
|
+
const fn = fields.length || asJson ? 'jsonb_array_elements' : 'jsonb_array_elements_text';
|
|
124
|
+
return `${fn}(${jsonField}) AS elem`;
|
|
125
|
+
}
|
|
126
|
+
jsonElemRef(field, asJson = false) {
|
|
127
|
+
if (field === undefined) {
|
|
128
|
+
return 'elem';
|
|
122
129
|
}
|
|
123
|
-
|
|
124
|
-
return `EXISTS (SELECT 1 FROM jsonb_array_elements(${jsonField}) AS elem WHERE ${conditions.join(' AND ')})`;
|
|
130
|
+
return asJson ? `elem->'${escapeSingleQuotes(field)}'` : `elem->>'${escapeSingleQuotes(field)}'`;
|
|
125
131
|
}
|
|
126
132
|
get regexpOp() {
|
|
127
133
|
return '~';
|
|
@@ -157,25 +163,32 @@ export class PgLikeSqlDialect extends AbstractSqlDialect {
|
|
|
157
163
|
}
|
|
158
164
|
super.formatPersistableValue(ctx, field, value);
|
|
159
165
|
}
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
166
|
+
/**
|
|
167
|
+
* `create_if_missing => false` keeps an absent key (and a NULL column) untouched; `WITH
|
|
168
|
+
* ORDINALITY` keeps the surviving elements in their original order.
|
|
169
|
+
*/
|
|
170
|
+
jsonPullKey(ctx, expr, escapedCol, key, value) {
|
|
171
|
+
const escapedKey = escapeSingleQuotes(key);
|
|
172
|
+
const kept = `SELECT jsonb_agg(uql_pull.val ORDER BY uql_pull.ord) FROM jsonb_array_elements(${escapedCol}->'${escapedKey}') WITH ORDINALITY AS uql_pull(val, ord) WHERE uql_pull.val <> ${this.jsonVal(ctx, value)}`;
|
|
173
|
+
return `jsonb_set(${expr}, '{${escapedKey}}', COALESCE((${kept}), '[]'::jsonb), false)`;
|
|
174
|
+
}
|
|
175
|
+
jsonSet(ctx, expr, set, field) {
|
|
176
|
+
return `${jsonSetTarget(expr, field, `'{}'::jsonb`)} || ${this.jsonVal(ctx, set)}`;
|
|
177
|
+
}
|
|
178
|
+
/** The only fragment that references `expr` twice - safe here because placeholders are numbered. */
|
|
179
|
+
jsonPush(ctx, expr, push) {
|
|
180
|
+
return Object.entries(push).reduce((acc, [key, value]) => {
|
|
181
|
+
const escapedKey = escapeSingleQuotes(key);
|
|
182
|
+
const ph = this.jsonVal(ctx, value);
|
|
183
|
+
return `jsonb_set(${acc}, '{${escapedKey}}', COALESCE((${acc})->'${escapedKey}', '[]'::jsonb) || jsonb_build_array(${ph}))`;
|
|
184
|
+
}, expr);
|
|
185
|
+
}
|
|
186
|
+
jsonUnset(ctx, expr, unset) {
|
|
187
|
+
return `(${expr}) - ${this.addValue(ctx.values, [...unset])}::text[]`;
|
|
188
|
+
}
|
|
189
|
+
/** Postgres binds JSON with a numbered placeholder and an explicit cast, per driver capability. */
|
|
190
|
+
jsonScalarParam(ctx, value) {
|
|
191
|
+
return this.jsonVal(ctx, value);
|
|
179
192
|
}
|
|
180
193
|
/**
|
|
181
194
|
* Helper to add a JSON value to context with appropriate stringification and cast.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pgLikeSqlDialect.js","sourceRoot":"","sources":["../../src/dialect/pgLikeSqlDialect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,
|
|
1
|
+
{"version":3,"file":"pgLikeSqlDialect.js","sourceRoot":"","sources":["../../src/dialect/pgLikeSqlDialect.ts"],"names":[],"mappings":"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"}
|
|
@@ -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, dialectName: string): 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,EACzB,WAAW,EAAE,MAAM,GAClB,IAAI,CAYN;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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
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, dialectName) {
|
|
41
|
+
const { colName, distance, vectorCast } = this.resolveVectorSortParams(meta, key, search);
|
|
42
|
+
const fn = this.vectorDistanceFns.get(distance);
|
|
43
|
+
if (!fn) {
|
|
44
|
+
throw Error(`${dialectName} does not support vector distance metric: ${distance}`);
|
|
45
|
+
}
|
|
46
|
+
ctx.append(`${fn}(${this.escapeId(colName)}, `);
|
|
47
|
+
ctx.addValue(`[${search.$vector.join(',')}]`);
|
|
48
|
+
if (vectorCast && dialectName === 'PostgreSQL') {
|
|
49
|
+
ctx.append(`::${vectorCast}`);
|
|
50
|
+
}
|
|
51
|
+
ctx.append(')');
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Append a vector distance projection.
|
|
55
|
+
* Delegates to `appendVectorSort` so each dialect's distance syntax is written once.
|
|
56
|
+
*/
|
|
57
|
+
appendVectorProjection(ctx, meta, key, search) {
|
|
58
|
+
this.appendVectorSort(ctx, meta, key, search);
|
|
59
|
+
ctx.append(` AS ${this.escapeId(search.$project)}`);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Append a vector similarity expression for `ORDER BY`.
|
|
63
|
+
* Default: auto-delegates to `appendFunctionVectorSort` when `vectorDistanceFns` has entries.
|
|
64
|
+
*/
|
|
65
|
+
appendVectorSort(ctx, meta, key, search) {
|
|
66
|
+
if (this.vectorDistanceFns.size > 0) {
|
|
67
|
+
this.appendFunctionVectorSort(ctx, meta, key, search, this.dialectName);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
throw new TypeError('Vector similarity sort is not supported by this dialect. Use raw() for vector queries.');
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# 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,EACzB,WAAmB;QAEnB,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QAC1F,MAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,MAAM,KAAK,CAAC,GAAG,WAAW,6CAA6C,QAAQ,EAAE,CAAC,CAAC;QACrF,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,IAAI,UAAU,IAAI,WAAW,KAAK,YAAY,EAAE,CAAC;YAC/C,GAAG,CAAC,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC,CAAC;QAChC,CAAC;QACD,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,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YACxE,OAAO;QACT,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,wFAAwF,CAAC,CAAC;IAChH,CAAC;CACF"}
|
|
@@ -1,18 +1,11 @@
|
|
|
1
|
-
import type {
|
|
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
|
|
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,
|
|
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":"
|
|
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"}
|
|
@@ -8,9 +8,21 @@ export declare class MariaDialect extends MysqlLikeSqlDialect {
|
|
|
8
8
|
constructor(options?: DialectOptions);
|
|
9
9
|
insert<E>(ctx: QueryContext, entity: Type<E>, payload: E | E[], opts?: QueryOptions): void;
|
|
10
10
|
upsert<E>(ctx: QueryContext, entity: Type<E>, conflictPaths: QueryConflictPaths<E>, payload: E | E[]): void;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
/**
|
|
12
|
+
* MariaDB supports neither MySQL's `->`/`->>` shorthand nor the base's chained form. `JSON_VALUE`
|
|
13
|
+
* reads a scalar and `JSON_EXTRACT` the subtree that the array operators need.
|
|
14
|
+
*/
|
|
15
|
+
protected getJsonPathScalarExpr(escapedColumn: string, jsonPathStr: string): string;
|
|
16
|
+
protected getJsonPathJsonbExpr(escapedColumn: string, jsonPathStr: string): string;
|
|
17
|
+
/** MariaDB has no `CAST(val AS JSON)`; `JSON_EXTRACT` at the root reads a value as JSON. */
|
|
18
|
+
protected jsonCast(operand: string): string;
|
|
19
|
+
/**
|
|
20
|
+
* MariaDB stores JSON as text, so JSON_ARRAYAGG would re-quote each element into a string
|
|
21
|
+
* (`["\"a\""]`). JSON_COMPACT marks it back as JSON, keeping element types intact.
|
|
22
|
+
*/
|
|
23
|
+
protected jsonPullElem(alias: string): string;
|
|
24
|
+
/** Text-backed JSON compares as text, so use JSON_EQUALS for key-order-independent equality. */
|
|
25
|
+
protected jsonPullKeep(alias: string, operand: string): string;
|
|
14
26
|
/** MariaDB 11.7+ vector distance functions. */
|
|
15
27
|
protected readonly vectorDistanceFns: ReadonlyMap<VectorDistance, string>;
|
|
16
28
|
}
|
|
@@ -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;
|
|
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;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;;;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,3 +1,4 @@
|
|
|
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 {
|
|
@@ -36,18 +37,30 @@ export class MariaDialect extends MysqlLikeSqlDialect {
|
|
|
36
37
|
ctx.pushValue(...insertCtx.values);
|
|
37
38
|
}
|
|
38
39
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
40
|
+
/**
|
|
41
|
+
* MariaDB supports neither MySQL's `->`/`->>` shorthand nor the base's chained form. `JSON_VALUE`
|
|
42
|
+
* reads a scalar and `JSON_EXTRACT` the subtree that the array operators need.
|
|
43
|
+
*/
|
|
44
|
+
getJsonPathScalarExpr(escapedColumn, jsonPathStr) {
|
|
45
|
+
return `JSON_VALUE(${escapedColumn}, ${jsonPath(jsonPathStr)})`;
|
|
46
|
+
}
|
|
47
|
+
getJsonPathJsonbExpr(escapedColumn, jsonPathStr) {
|
|
48
|
+
return `JSON_EXTRACT(${escapedColumn}, ${jsonPath(jsonPathStr)})`;
|
|
49
|
+
}
|
|
50
|
+
/** MariaDB has no `CAST(val AS JSON)`; `JSON_EXTRACT` at the root reads a value as JSON. */
|
|
51
|
+
jsonCast(operand) {
|
|
52
|
+
return `JSON_EXTRACT(${operand}, '$')`;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* MariaDB stores JSON as text, so JSON_ARRAYAGG would re-quote each element into a string
|
|
56
|
+
* (`["\"a\""]`). JSON_COMPACT marks it back as JSON, keeping element types intact.
|
|
57
|
+
*/
|
|
58
|
+
jsonPullElem(alias) {
|
|
59
|
+
return `JSON_COMPACT(${alias}.v)`;
|
|
60
|
+
}
|
|
61
|
+
/** Text-backed JSON compares as text, so use JSON_EQUALS for key-order-independent equality. */
|
|
62
|
+
jsonPullKeep(alias, operand) {
|
|
63
|
+
return `NOT JSON_EQUALS(${alias}.v, ${operand})`;
|
|
51
64
|
}
|
|
52
65
|
/** MariaDB 11.7+ vector distance functions. */
|
|
53
66
|
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;
|
|
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/
|
|
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":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAGnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACpF,OAAO,KAAK,EAEV,YAAY,EACZ,WAAW,EACX,cAAc,EACd,cAAc,EACd,UAAU,EACV,eAAe,EACf,IAAI,EACL,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,qBAAa,oBAAqB,SAAQ,eAAgB,YAAW,eAAe;IAShF,SAAS,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,gBAAgB;IAR/D,QAAQ,CAAC,WAAW,aAAmC;IAEvD,mBAA4B,eAAe,
|
|
1
|
+
{"version":3,"file":"mongoSchemaGenerator.d.ts","sourceRoot":"","sources":["../../../src/migrate/generator/mongoSchemaGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,8 @@ export type ReferentialAction = 'CASCADE' | 'SET NULL' | 'RESTRICT' | 'NO ACTION
|
|
|
24
24
|
* - `mapPrimaryKeyRow()` - Extract column name from a PK row
|
|
25
25
|
*/
|
|
26
26
|
export declare abstract class AbstractSqlSchemaIntrospector extends BaseSqlIntrospector implements SchemaIntrospector {
|
|
27
|
-
protected
|
|
27
|
+
protected readonly pool: QuerierPool;
|
|
28
|
+
constructor(pool: QuerierPool);
|
|
28
29
|
getTableSchema(tableName: string): Promise<TableSchema | undefined>;
|
|
29
30
|
getTableNames(): Promise<string[]>;
|
|
30
31
|
tableExists(tableName: string): Promise<boolean>;
|