@prisma-next/sql-relational-core 0.16.0-dev.3 → 0.16.0-dev.30
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/dist/{codec-types-C8vFGWij.d.mts → codec-types-Bayoa4PI.d.mts} +3 -2
- package/dist/codec-types-Bayoa4PI.d.mts.map +1 -0
- package/dist/{ddl-types-DzaZCtFT.d.mts → ddl-types-B3SfjPGI.d.mts} +3 -3
- package/dist/{ddl-types-DzaZCtFT.d.mts.map → ddl-types-B3SfjPGI.d.mts.map} +1 -1
- package/dist/exports/ast.d.mts +4 -4
- package/dist/exports/ast.mjs +63 -2
- package/dist/exports/ast.mjs.map +1 -1
- package/dist/exports/codec-descriptor-registry.d.mts +2 -2
- package/dist/exports/contract-free.d.mts +3 -3
- package/dist/exports/contract-free.mjs +1 -1
- package/dist/exports/expression.d.mts +2 -2
- package/dist/exports/expression.mjs +1 -1
- package/dist/exports/middleware.d.mts +1 -1
- package/dist/exports/plan.d.mts +2 -2
- package/dist/exports/query-lane-context.d.mts +1 -1
- package/dist/exports/types.d.mts +1 -1
- package/dist/index.d.mts +9 -9
- package/dist/index.mjs +3 -3
- package/dist/{middleware-CFDg6XOc.d.mts → middleware-_9-4TYKC.d.mts} +2 -2
- package/dist/{middleware-CFDg6XOc.d.mts.map → middleware-_9-4TYKC.d.mts.map} +1 -1
- package/dist/{plan-CBT55zev.d.mts → plan-Dq94efZJ.d.mts} +2 -2
- package/dist/{plan-CBT55zev.d.mts.map → plan-Dq94efZJ.d.mts.map} +1 -1
- package/dist/{query-lane-context-BNbbusGn.d.mts → query-lane-context-DTCOHMXn.d.mts} +2 -2
- package/dist/{query-lane-context-BNbbusGn.d.mts.map → query-lane-context-DTCOHMXn.d.mts.map} +1 -1
- package/dist/{sql-execution-plan-CPw3uKrJ.d.mts → sql-execution-plan-B-C-6cZN.d.mts} +2 -2
- package/dist/{sql-execution-plan-CPw3uKrJ.d.mts.map → sql-execution-plan-B-C-6cZN.d.mts.map} +1 -1
- package/dist/{types-BR266jxM.d.mts → types-CRV7uuOC.d.mts} +5 -5
- package/dist/{types-BR266jxM.d.mts.map → types-CRV7uuOC.d.mts.map} +1 -1
- package/dist/{types-Dr3jep6j.d.mts → types-CWlaErjN.d.mts} +97 -13
- package/dist/types-CWlaErjN.d.mts.map +1 -0
- package/dist/{types-DtzFztRV.mjs → types-DpAvAX8u.mjs} +160 -24
- package/dist/types-DpAvAX8u.mjs.map +1 -0
- package/package.json +11 -11
- package/src/ast/codec-types.ts +37 -0
- package/src/ast/json-value-projection.ts +100 -0
- package/src/ast/types.ts +227 -49
- package/src/exports/ast.ts +1 -0
- package/dist/codec-types-C8vFGWij.d.mts.map +0 -1
- package/dist/types-Dr3jep6j.d.mts.map +0 -1
- package/dist/types-DtzFztRV.mjs.map +0 -1
package/src/ast/types.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import type { ParamSpec } from '@prisma-next/operations';
|
|
2
2
|
import type { SqlLoweringSpec } from '@prisma-next/sql-operations';
|
|
3
|
+
|
|
3
4
|
import { ifDefined } from '@prisma-next/utils/defined';
|
|
4
|
-
import
|
|
5
|
+
import { structuredError } from '@prisma-next/utils/structured-error';
|
|
6
|
+
import { type CodecRef, frozenCodecRef } from './codec-types';
|
|
7
|
+
import type { AnyJsonValueProjection } from './json-value-projection';
|
|
5
8
|
|
|
6
9
|
export type Direction = 'asc' | 'desc';
|
|
7
10
|
|
|
@@ -50,6 +53,9 @@ export interface ExprVisitor<R> {
|
|
|
50
53
|
operation(expr: OperationExpr): R;
|
|
51
54
|
aggregate(expr: AggregateExpr): R;
|
|
52
55
|
windowFunc(expr: WindowFuncExpr): R;
|
|
56
|
+
functionCall(expr: FunctionCallExpr): R;
|
|
57
|
+
cast(expr: CastExpr): R;
|
|
58
|
+
case(expr: CaseExpr): R;
|
|
53
59
|
jsonObject(expr: JsonObjectExpr): R;
|
|
54
60
|
jsonArrayAgg(expr: JsonArrayAggExpr): R;
|
|
55
61
|
binary(expr: BinaryExpr): R;
|
|
@@ -65,6 +71,31 @@ export interface ExprVisitor<R> {
|
|
|
65
71
|
rawExpr(expr: RawExpr): R;
|
|
66
72
|
}
|
|
67
73
|
|
|
74
|
+
const toAnyExpressionVisitor: ExprVisitor<AnyExpression> = {
|
|
75
|
+
columnRef: (expr) => expr,
|
|
76
|
+
identifierRef: (expr) => expr,
|
|
77
|
+
subquery: (expr) => expr,
|
|
78
|
+
operation: (expr) => expr,
|
|
79
|
+
aggregate: (expr) => expr,
|
|
80
|
+
windowFunc: (expr) => expr,
|
|
81
|
+
functionCall: (expr) => expr,
|
|
82
|
+
cast: (expr) => expr,
|
|
83
|
+
case: (expr) => expr,
|
|
84
|
+
jsonObject: (expr) => expr,
|
|
85
|
+
jsonArrayAgg: (expr) => expr,
|
|
86
|
+
binary: (expr) => expr,
|
|
87
|
+
and: (expr) => expr,
|
|
88
|
+
or: (expr) => expr,
|
|
89
|
+
exists: (expr) => expr,
|
|
90
|
+
nullCheck: (expr) => expr,
|
|
91
|
+
not: (expr) => expr,
|
|
92
|
+
literal: (expr) => expr,
|
|
93
|
+
param: (expr) => expr,
|
|
94
|
+
preparedParam: (expr) => expr,
|
|
95
|
+
list: (expr) => expr,
|
|
96
|
+
rawExpr: (expr) => expr,
|
|
97
|
+
};
|
|
98
|
+
|
|
68
99
|
export interface ExpressionFolder<T> {
|
|
69
100
|
empty: T;
|
|
70
101
|
combine(a: T, b: T): T;
|
|
@@ -85,7 +116,7 @@ export type JoinOnExpr = EqColJoinOn | AnyExpression;
|
|
|
85
116
|
export type WhereArg = AnyExpression | ToWhereExpr;
|
|
86
117
|
export type JsonObjectEntry = {
|
|
87
118
|
readonly key: string;
|
|
88
|
-
readonly value:
|
|
119
|
+
readonly value: AnyJsonValueProjection;
|
|
89
120
|
};
|
|
90
121
|
|
|
91
122
|
function frozenArrayCopy<T>(values: readonly T[]): ReadonlyArray<T> {
|
|
@@ -102,18 +133,6 @@ function frozenRecordCopy<T>(record: Readonly<Record<string, T>>): Readonly<Reco
|
|
|
102
133
|
return Object.freeze({ ...record });
|
|
103
134
|
}
|
|
104
135
|
|
|
105
|
-
function frozenCodecRef(codec: CodecRef): CodecRef {
|
|
106
|
-
const typeParams =
|
|
107
|
-
codec.typeParams === undefined
|
|
108
|
-
? undefined
|
|
109
|
-
: (structuredClone(codec.typeParams) as CodecRef['typeParams']);
|
|
110
|
-
const base = {
|
|
111
|
-
codecId: codec.codecId,
|
|
112
|
-
...ifDefined('typeParams', typeParams),
|
|
113
|
-
};
|
|
114
|
-
return Object.freeze(codec.many ? { ...base, many: true } : base);
|
|
115
|
-
}
|
|
116
|
-
|
|
117
136
|
function freezeRows(
|
|
118
137
|
rows: ReadonlyArray<Record<string, InsertValue>>,
|
|
119
138
|
): ReadonlyArray<Readonly<Record<string, InsertValue>>> {
|
|
@@ -242,7 +261,7 @@ function rewriteUpdateSet(
|
|
|
242
261
|
): Record<string, AnyExpression> {
|
|
243
262
|
const result: Record<string, AnyExpression> = {};
|
|
244
263
|
for (const [key, value] of Object.entries(set)) {
|
|
245
|
-
result[key] = value.rewrite(rewriter
|
|
264
|
+
result[key] = value.rewrite(rewriter);
|
|
246
265
|
}
|
|
247
266
|
return result;
|
|
248
267
|
}
|
|
@@ -250,9 +269,13 @@ function rewriteUpdateSet(
|
|
|
250
269
|
function rewriteLimitOffset<T extends number | AnyExpression | undefined>(
|
|
251
270
|
value: T,
|
|
252
271
|
rewriter: AstRewriter,
|
|
253
|
-
): T
|
|
272
|
+
): T;
|
|
273
|
+
function rewriteLimitOffset(
|
|
274
|
+
value: number | AnyExpression | undefined,
|
|
275
|
+
rewriter: AstRewriter,
|
|
276
|
+
): number | AnyExpression | undefined {
|
|
254
277
|
if (value === undefined || typeof value === 'number') return value;
|
|
255
|
-
return value.rewrite(rewriter)
|
|
278
|
+
return value.rewrite(rewriter);
|
|
256
279
|
}
|
|
257
280
|
|
|
258
281
|
function rewriteOnConflict(onConflict: InsertOnConflict, rewriter: AstRewriter): InsertOnConflict {
|
|
@@ -306,12 +329,16 @@ abstract class Expression extends AstNode implements ExpressionSource {
|
|
|
306
329
|
throw new Error(`${this.constructor.name} does not expose a base column reference`);
|
|
307
330
|
}
|
|
308
331
|
|
|
332
|
+
#asAnyExpression(): AnyExpression {
|
|
333
|
+
return this.accept(toAnyExpressionVisitor);
|
|
334
|
+
}
|
|
335
|
+
|
|
309
336
|
toExpr(): AnyExpression {
|
|
310
|
-
return this
|
|
337
|
+
return this.#asAnyExpression();
|
|
311
338
|
}
|
|
312
339
|
|
|
313
340
|
not(): NotExpr {
|
|
314
|
-
return new NotExpr(this
|
|
341
|
+
return new NotExpr(this.#asAnyExpression());
|
|
315
342
|
}
|
|
316
343
|
}
|
|
317
344
|
|
|
@@ -380,28 +407,65 @@ export class DerivedTableSource extends FromSource {
|
|
|
380
407
|
}
|
|
381
408
|
}
|
|
382
409
|
|
|
410
|
+
export interface FunctionSourceAlias {
|
|
411
|
+
readonly alias: string;
|
|
412
|
+
readonly columnAliases?: ReadonlyArray<string>;
|
|
413
|
+
}
|
|
414
|
+
|
|
383
415
|
export class FunctionSource extends FromSource {
|
|
384
416
|
readonly kind = 'function-source' as const;
|
|
385
417
|
readonly fn: string;
|
|
386
418
|
readonly args: ReadonlyArray<AnyExpression>;
|
|
387
419
|
readonly alias: string | undefined;
|
|
388
|
-
|
|
389
|
-
|
|
420
|
+
readonly columnAliases: ReadonlyArray<string> | undefined;
|
|
421
|
+
readonly ordinality: boolean;
|
|
422
|
+
|
|
423
|
+
protected constructor(
|
|
424
|
+
fn: string,
|
|
425
|
+
args: ReadonlyArray<AnyExpression>,
|
|
426
|
+
alias?: FunctionSourceAlias,
|
|
427
|
+
ordinality = false,
|
|
428
|
+
) {
|
|
390
429
|
super();
|
|
430
|
+
if (alias?.columnAliases?.length === 0) {
|
|
431
|
+
throw structuredError('SQL.AST_INVALID', 'FunctionSource column aliases must not be empty', {
|
|
432
|
+
meta: { kind: 'function-source', field: 'columnAliases' },
|
|
433
|
+
});
|
|
434
|
+
}
|
|
391
435
|
this.fn = fn;
|
|
392
436
|
this.args = frozenArrayCopy(args);
|
|
393
|
-
this.alias = alias;
|
|
437
|
+
this.alias = alias?.alias;
|
|
438
|
+
this.columnAliases =
|
|
439
|
+
alias?.columnAliases === undefined ? undefined : frozenArrayCopy(alias.columnAliases);
|
|
440
|
+
this.ordinality = ordinality;
|
|
394
441
|
this.freeze();
|
|
395
442
|
}
|
|
396
443
|
|
|
397
|
-
static of(
|
|
444
|
+
static of(
|
|
445
|
+
fn: string,
|
|
446
|
+
args: ReadonlyArray<AnyExpression>,
|
|
447
|
+
alias?: FunctionSourceAlias,
|
|
448
|
+
): FunctionSource {
|
|
398
449
|
return new FunctionSource(fn, args, alias);
|
|
399
450
|
}
|
|
400
451
|
|
|
452
|
+
#aliasOptions(): FunctionSourceAlias | undefined {
|
|
453
|
+
if (this.alias === undefined) return undefined;
|
|
454
|
+
return {
|
|
455
|
+
alias: this.alias,
|
|
456
|
+
...ifDefined('columnAliases', this.columnAliases),
|
|
457
|
+
};
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
withOrdinality(): FunctionSource {
|
|
461
|
+
if (this.ordinality) return this;
|
|
462
|
+
return new FunctionSource(this.fn, this.args, this.#aliasOptions(), true);
|
|
463
|
+
}
|
|
464
|
+
|
|
401
465
|
override rewrite(rewriter: AstRewriter): AnyFromSource {
|
|
402
466
|
const rewrittenArgs = this.args.map((arg) => rewriteComparable(arg, rewriter));
|
|
403
467
|
if (rewrittenArgs.every((arg, i) => arg === this.args[i])) return this;
|
|
404
|
-
return new FunctionSource(this.fn, rewrittenArgs, this.
|
|
468
|
+
return new FunctionSource(this.fn, rewrittenArgs, this.#aliasOptions(), this.ordinality);
|
|
405
469
|
}
|
|
406
470
|
|
|
407
471
|
override toFromSource(): AnyFromSource {
|
|
@@ -648,9 +712,7 @@ export class OperationExpr extends Expression {
|
|
|
648
712
|
return new OperationExpr({
|
|
649
713
|
method: this.method,
|
|
650
714
|
self: this.self.rewrite(rewriter),
|
|
651
|
-
args: this.args.map((arg) => rewriteComparable(arg, rewriter))
|
|
652
|
-
AnyExpression | ParamRef | LiteralExpr
|
|
653
|
-
>,
|
|
715
|
+
args: this.args.map((arg) => rewriteComparable(arg, rewriter)),
|
|
654
716
|
returns: this.returns,
|
|
655
717
|
lowering: this.lowering,
|
|
656
718
|
});
|
|
@@ -825,6 +887,129 @@ export class WindowFuncExpr extends Expression {
|
|
|
825
887
|
}
|
|
826
888
|
}
|
|
827
889
|
|
|
890
|
+
export class FunctionCallExpr extends Expression {
|
|
891
|
+
readonly kind = 'function-call' as const;
|
|
892
|
+
readonly fn: string;
|
|
893
|
+
readonly args: ReadonlyArray<AnyExpression>;
|
|
894
|
+
|
|
895
|
+
constructor(fn: string, args: ReadonlyArray<AnyExpression>) {
|
|
896
|
+
super();
|
|
897
|
+
this.fn = fn;
|
|
898
|
+
this.args = frozenArrayCopy(args);
|
|
899
|
+
this.freeze();
|
|
900
|
+
}
|
|
901
|
+
|
|
902
|
+
static of(fn: string, args: ReadonlyArray<AnyExpression>): FunctionCallExpr {
|
|
903
|
+
return new FunctionCallExpr(fn, args);
|
|
904
|
+
}
|
|
905
|
+
|
|
906
|
+
override accept<R>(visitor: ExprVisitor<R>): R {
|
|
907
|
+
return visitor.functionCall(this);
|
|
908
|
+
}
|
|
909
|
+
|
|
910
|
+
override rewrite(rewriter: ExpressionRewriter): AnyExpression {
|
|
911
|
+
return new FunctionCallExpr(
|
|
912
|
+
this.fn,
|
|
913
|
+
this.args.map((arg) => arg.rewrite(rewriter)),
|
|
914
|
+
);
|
|
915
|
+
}
|
|
916
|
+
|
|
917
|
+
override fold<T>(folder: ExpressionFolder<T>): T {
|
|
918
|
+
return combineAll(
|
|
919
|
+
folder,
|
|
920
|
+
this.args.map((arg) => () => arg.fold(folder)),
|
|
921
|
+
);
|
|
922
|
+
}
|
|
923
|
+
}
|
|
924
|
+
|
|
925
|
+
export class CastExpr extends Expression {
|
|
926
|
+
readonly kind = 'cast' as const;
|
|
927
|
+
readonly expr: AnyExpression;
|
|
928
|
+
readonly targetType: string;
|
|
929
|
+
|
|
930
|
+
constructor(expr: AnyExpression, targetType: string) {
|
|
931
|
+
super();
|
|
932
|
+
this.expr = expr;
|
|
933
|
+
this.targetType = targetType;
|
|
934
|
+
this.freeze();
|
|
935
|
+
}
|
|
936
|
+
|
|
937
|
+
static as(expr: AnyExpression, targetType: string): CastExpr {
|
|
938
|
+
return new CastExpr(expr, targetType);
|
|
939
|
+
}
|
|
940
|
+
|
|
941
|
+
override accept<R>(visitor: ExprVisitor<R>): R {
|
|
942
|
+
return visitor.cast(this);
|
|
943
|
+
}
|
|
944
|
+
|
|
945
|
+
override rewrite(rewriter: ExpressionRewriter): AnyExpression {
|
|
946
|
+
return new CastExpr(this.expr.rewrite(rewriter), this.targetType);
|
|
947
|
+
}
|
|
948
|
+
|
|
949
|
+
override fold<T>(folder: ExpressionFolder<T>): T {
|
|
950
|
+
return this.expr.fold(folder);
|
|
951
|
+
}
|
|
952
|
+
}
|
|
953
|
+
|
|
954
|
+
export interface CaseBranch {
|
|
955
|
+
readonly condition: AnyExpression;
|
|
956
|
+
readonly value: AnyExpression;
|
|
957
|
+
}
|
|
958
|
+
|
|
959
|
+
export class CaseExpr extends Expression {
|
|
960
|
+
readonly kind = 'case' as const;
|
|
961
|
+
readonly branches: ReadonlyArray<Readonly<CaseBranch>>;
|
|
962
|
+
readonly elseExpr: AnyExpression | undefined;
|
|
963
|
+
|
|
964
|
+
constructor(branches: ReadonlyArray<CaseBranch>, elseExpr?: AnyExpression) {
|
|
965
|
+
super();
|
|
966
|
+
if (branches.length === 0) {
|
|
967
|
+
throw structuredError('SQL.AST_INVALID', 'CaseExpr requires at least one branch', {
|
|
968
|
+
meta: { kind: 'case', field: 'branches' },
|
|
969
|
+
});
|
|
970
|
+
}
|
|
971
|
+
this.branches = Object.freeze(
|
|
972
|
+
branches.map((branch) =>
|
|
973
|
+
Object.freeze({
|
|
974
|
+
condition: branch.condition,
|
|
975
|
+
value: branch.value,
|
|
976
|
+
}),
|
|
977
|
+
),
|
|
978
|
+
);
|
|
979
|
+
this.elseExpr = elseExpr;
|
|
980
|
+
this.freeze();
|
|
981
|
+
}
|
|
982
|
+
|
|
983
|
+
static of(branches: ReadonlyArray<CaseBranch>, elseExpr?: AnyExpression): CaseExpr {
|
|
984
|
+
return new CaseExpr(branches, elseExpr);
|
|
985
|
+
}
|
|
986
|
+
|
|
987
|
+
override accept<R>(visitor: ExprVisitor<R>): R {
|
|
988
|
+
return visitor.case(this);
|
|
989
|
+
}
|
|
990
|
+
|
|
991
|
+
override rewrite(rewriter: ExpressionRewriter): AnyExpression {
|
|
992
|
+
return new CaseExpr(
|
|
993
|
+
this.branches.map((branch) => ({
|
|
994
|
+
condition: branch.condition.rewrite(rewriter),
|
|
995
|
+
value: branch.value.rewrite(rewriter),
|
|
996
|
+
})),
|
|
997
|
+
this.elseExpr?.rewrite(rewriter),
|
|
998
|
+
);
|
|
999
|
+
}
|
|
1000
|
+
|
|
1001
|
+
override fold<T>(folder: ExpressionFolder<T>): T {
|
|
1002
|
+
const elseExpr = this.elseExpr;
|
|
1003
|
+
return combineAll(folder, [
|
|
1004
|
+
...this.branches.flatMap((branch) => [
|
|
1005
|
+
() => branch.condition.fold(folder),
|
|
1006
|
+
() => branch.value.fold(folder),
|
|
1007
|
+
]),
|
|
1008
|
+
...(elseExpr === undefined ? [] : [() => elseExpr.fold(folder)]),
|
|
1009
|
+
]);
|
|
1010
|
+
}
|
|
1011
|
+
}
|
|
1012
|
+
|
|
828
1013
|
export class JsonObjectExpr extends Expression {
|
|
829
1014
|
readonly kind = 'json-object' as const;
|
|
830
1015
|
readonly entries: ReadonlyArray<JsonObjectEntry>;
|
|
@@ -835,7 +1020,7 @@ export class JsonObjectExpr extends Expression {
|
|
|
835
1020
|
this.freeze();
|
|
836
1021
|
}
|
|
837
1022
|
|
|
838
|
-
static entry(key: string, value:
|
|
1023
|
+
static entry(key: string, value: AnyJsonValueProjection): JsonObjectEntry {
|
|
839
1024
|
return {
|
|
840
1025
|
key,
|
|
841
1026
|
value,
|
|
@@ -854,12 +1039,7 @@ export class JsonObjectExpr extends Expression {
|
|
|
854
1039
|
return new JsonObjectExpr(
|
|
855
1040
|
this.entries.map((entry) => ({
|
|
856
1041
|
key: entry.key,
|
|
857
|
-
value:
|
|
858
|
-
entry.value.kind === 'literal'
|
|
859
|
-
? rewriter.literal
|
|
860
|
-
? rewriter.literal(entry.value)
|
|
861
|
-
: entry.value
|
|
862
|
-
: entry.value.rewrite(rewriter),
|
|
1042
|
+
value: entry.value.rewrite(rewriter),
|
|
863
1043
|
})),
|
|
864
1044
|
);
|
|
865
1045
|
}
|
|
@@ -867,14 +1047,7 @@ export class JsonObjectExpr extends Expression {
|
|
|
867
1047
|
override fold<T>(folder: ExpressionFolder<T>): T {
|
|
868
1048
|
return combineAll(
|
|
869
1049
|
folder,
|
|
870
|
-
this.entries.map(
|
|
871
|
-
(entry) => () =>
|
|
872
|
-
entry.value.kind === 'literal'
|
|
873
|
-
? folder.literal
|
|
874
|
-
? folder.literal(entry.value)
|
|
875
|
-
: folder.empty
|
|
876
|
-
: entry.value.fold(folder),
|
|
877
|
-
),
|
|
1050
|
+
this.entries.map((entry) => () => entry.value.fold(folder)),
|
|
878
1051
|
);
|
|
879
1052
|
}
|
|
880
1053
|
}
|
|
@@ -915,12 +1088,12 @@ export class OrderByItem extends AstNode {
|
|
|
915
1088
|
|
|
916
1089
|
export class JsonArrayAggExpr extends Expression {
|
|
917
1090
|
readonly kind = 'json-array-agg' as const;
|
|
918
|
-
readonly expr:
|
|
1091
|
+
readonly expr: AnyJsonValueProjection;
|
|
919
1092
|
readonly onEmpty: 'null' | 'emptyArray';
|
|
920
1093
|
readonly orderBy: ReadonlyArray<OrderByItem> | undefined;
|
|
921
1094
|
|
|
922
1095
|
constructor(
|
|
923
|
-
expr:
|
|
1096
|
+
expr: AnyJsonValueProjection,
|
|
924
1097
|
onEmpty: 'null' | 'emptyArray' = 'null',
|
|
925
1098
|
orderBy?: ReadonlyArray<OrderByItem>,
|
|
926
1099
|
) {
|
|
@@ -932,7 +1105,7 @@ export class JsonArrayAggExpr extends Expression {
|
|
|
932
1105
|
}
|
|
933
1106
|
|
|
934
1107
|
static of(
|
|
935
|
-
expr:
|
|
1108
|
+
expr: AnyJsonValueProjection,
|
|
936
1109
|
onEmpty: 'null' | 'emptyArray' = 'null',
|
|
937
1110
|
orderBy?: ReadonlyArray<OrderByItem>,
|
|
938
1111
|
): JsonArrayAggExpr {
|
|
@@ -1304,9 +1477,9 @@ export class ProjectionItem extends AstNode {
|
|
|
1304
1477
|
readonly alias: string;
|
|
1305
1478
|
readonly expr: ProjectionExpr;
|
|
1306
1479
|
/**
|
|
1307
|
-
* Codec identity for
|
|
1480
|
+
* Codec identity for any known projected result, whether read directly from a contract column or forwarded through a query wrapper. Decode-side dispatch resolves the per-instance codec through `contractCodecs.forCodecRef(codec)` — content-keyed memoisation collapses repeated lookups for the same logical result onto one shared {@link Codec}.
|
|
1308
1481
|
*
|
|
1309
|
-
* Stays `undefined`
|
|
1482
|
+
* Stays `undefined` only when the projected result's codec is unknown, such as computed expressions, subqueries, or raw aliases whose decoded type the runtime cannot infer.
|
|
1310
1483
|
*/
|
|
1311
1484
|
readonly codec: CodecRef | undefined;
|
|
1312
1485
|
|
|
@@ -1991,6 +2164,9 @@ export type AnyExpression =
|
|
|
1991
2164
|
| OperationExpr
|
|
1992
2165
|
| AggregateExpr
|
|
1993
2166
|
| WindowFuncExpr
|
|
2167
|
+
| FunctionCallExpr
|
|
2168
|
+
| CastExpr
|
|
2169
|
+
| CaseExpr
|
|
1994
2170
|
| JsonObjectExpr
|
|
1995
2171
|
| JsonArrayAggExpr
|
|
1996
2172
|
| ListExpression
|
|
@@ -2027,7 +2203,8 @@ export function isQueryAst(value: unknown): value is AnyQueryAst {
|
|
|
2027
2203
|
typeof value === 'object' &&
|
|
2028
2204
|
value !== null &&
|
|
2029
2205
|
'kind' in value &&
|
|
2030
|
-
|
|
2206
|
+
typeof value.kind === 'string' &&
|
|
2207
|
+
queryAstKinds.has(value.kind)
|
|
2031
2208
|
);
|
|
2032
2209
|
}
|
|
2033
2210
|
|
|
@@ -2036,7 +2213,8 @@ export function isWhereExpr(value: unknown): value is AnyExpression {
|
|
|
2036
2213
|
typeof value === 'object' &&
|
|
2037
2214
|
value !== null &&
|
|
2038
2215
|
'kind' in value &&
|
|
2039
|
-
|
|
2216
|
+
typeof value.kind === 'string' &&
|
|
2217
|
+
whereExprKinds.has(value.kind)
|
|
2040
2218
|
);
|
|
2041
2219
|
}
|
|
2042
2220
|
|
package/src/exports/ast.ts
CHANGED
|
@@ -2,6 +2,7 @@ export * from '../ast/adapter-types';
|
|
|
2
2
|
export * from '../ast/codec-types';
|
|
3
3
|
export * from '../ast/ddl-types';
|
|
4
4
|
export * from '../ast/driver-types';
|
|
5
|
+
export * from '../ast/json-value-projection';
|
|
5
6
|
export * from '../ast/sql-codec-helpers';
|
|
6
7
|
export * from '../ast/sql-codecs';
|
|
7
8
|
export * from '../ast/types';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"codec-types-C8vFGWij.d.mts","names":[],"sources":["../src/ast/codec-types.ts"],"mappings":";;;;;;;UAqBiB;WACN;WACA;;;;;;;UAQM,4BAA4B;WAClC,SAAS;;;;;;;;;;;UAYH,gCAAgC;WACtC,QAAQ;aAAyB;aAAwB;;;;;;UAMnD;WACN;aACE;eACE;iBACE;;;;;;;;;;;;UAaA,QACf,4BACA,yBAAyB,wBAAwB,cACjD,iBACA,0BACQ,MAAU,IAAI,SAAS,OAAO;EACtC,OAAO,OAAO,QAAQ,KAAK,sBAAsB,QAAQ;EACzD,OAAO,MAAM,OAAO,KAAK,sBAAsB,QAAQ;;;;;;;;;UAUxC;;;;;;EAMf,UAAU,qBAAqB,eAAe,iBAAiB;;;;;;EAO/D,YAAY,KAAK,WAAW;;;;;;KAQlB,qBAAqB;KAE5B,wBAAwB,KAC3B,UAAU,sBAAsB,MAAM,WAAW,WAAW;KAElD,kBAAkB,KAAK,UAAU,qBAAqB;KAEtD,qBAAqB,KAC/B,wBAAwB,WAAW,uBAA2B,6BAA6B,MACvF;;;;;;;KASM,sBAAsB,KAAK;WAC5B,cAAc,yBAAyB;IAE9C,kBAAkB;;;;;;KAQV,kBACV,gCACY,WAAW,cAAc,wBACjC,oCAEM,WAAW,eAAe,kBAAkB,YAAY;WACvD,OAAO,qBAAqB,YAAY;WACxC,QAAQ,qBAAqB,YAAY;WACzC,QAAQ,sBAAsB,YAAY"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types-Dr3jep6j.d.mts","names":[],"sources":["../src/ast/types.ts"],"mappings":"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"}
|