@prisma-next/sql-relational-core 0.5.0-dev.23 → 0.5.0-dev.25
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/README.md +1 -1
- package/dist/{errors-DGTx5yrY.d.mts → errors-0WBzgMtY.d.mts} +2 -2
- package/dist/errors-0WBzgMtY.d.mts.map +1 -0
- package/dist/exports/ast.d.mts +13 -2
- package/dist/exports/ast.d.mts.map +1 -1
- package/dist/exports/ast.mjs +22 -2
- package/dist/exports/ast.mjs.map +1 -1
- package/dist/exports/errors.d.mts +2 -2
- package/dist/exports/expression.d.mts +1 -1
- package/dist/exports/expression.d.mts.map +1 -1
- package/dist/exports/expression.mjs +1 -1
- package/dist/exports/plan.d.mts +3 -3
- package/dist/exports/plan.mjs +1 -17
- package/dist/exports/types.d.mts +2 -2
- package/dist/index.d.mts +8 -8
- package/dist/index.mjs +4 -4
- package/dist/{plan-fzKZz634.d.mts → plan-C7SiEWkN.d.mts} +3 -10
- package/dist/plan-C7SiEWkN.d.mts.map +1 -0
- package/dist/query-lane-context-2K0OsuLw.d.mts.map +1 -1
- package/dist/{sql-execution-plan-CRa8P62o.d.mts → sql-execution-plan-Dgx7BGin.d.mts} +2 -2
- package/dist/{sql-execution-plan-CRa8P62o.d.mts.map → sql-execution-plan-Dgx7BGin.d.mts.map} +1 -1
- package/dist/{types-DMssjYwC.d.mts → types-3qZo79jt.d.mts} +4 -6
- package/dist/{types-DMssjYwC.d.mts.map → types-3qZo79jt.d.mts.map} +1 -1
- package/dist/{types-DKqt0Ynw.d.mts → types-B4dL4lc3.d.mts} +17 -22
- package/dist/types-B4dL4lc3.d.mts.map +1 -0
- package/dist/{types-BmPWLErB.d.mts → types-BUlUvdIU.d.mts} +3 -3
- package/dist/{types-BmPWLErB.d.mts.map → types-BUlUvdIU.d.mts.map} +1 -1
- package/dist/{types--BjM9czT.mjs → types-DUL-3vy6.mjs} +71 -89
- package/dist/types-DUL-3vy6.mjs.map +1 -0
- package/package.json +9 -9
- package/src/ast/types.ts +142 -172
- package/src/ast/util.ts +23 -0
- package/src/plan.ts +0 -20
- package/src/types.ts +1 -3
- package/dist/errors-DGTx5yrY.d.mts.map +0 -1
- package/dist/exports/plan.mjs.map +0 -1
- package/dist/plan-fzKZz634.d.mts.map +0 -1
- package/dist/types--BjM9czT.mjs.map +0 -1
- package/dist/types-DKqt0Ynw.d.mts.map +0 -1
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { PlanRefs } from "@prisma-next/contract/types";
|
|
2
1
|
import { ParamSpec } from "@prisma-next/operations";
|
|
3
2
|
import { SqlLoweringSpec } from "@prisma-next/sql-operations";
|
|
4
3
|
|
|
@@ -65,13 +64,10 @@ declare abstract class AstNode {
|
|
|
65
64
|
protected freeze(): void;
|
|
66
65
|
}
|
|
67
66
|
declare abstract class QueryAst extends AstNode {
|
|
68
|
-
abstract collectRefs(): PlanRefs;
|
|
69
67
|
abstract collectParamRefs(): ParamRef[];
|
|
70
68
|
abstract toQueryAst(): AnyQueryAst;
|
|
71
|
-
collectColumnRefs(): ColumnRef[];
|
|
72
69
|
}
|
|
73
70
|
declare abstract class FromSource extends AstNode {
|
|
74
|
-
abstract collectRefs(): PlanRefs;
|
|
75
71
|
abstract rewrite(rewriter: AstRewriter): AnyFromSource;
|
|
76
72
|
abstract toFromSource(): AnyFromSource;
|
|
77
73
|
}
|
|
@@ -93,7 +89,6 @@ declare class TableSource extends FromSource {
|
|
|
93
89
|
static named(name: string, alias?: string): TableSource;
|
|
94
90
|
rewrite(rewriter: AstRewriter): AnyFromSource;
|
|
95
91
|
toFromSource(): AnyFromSource;
|
|
96
|
-
collectRefs(): PlanRefs;
|
|
97
92
|
}
|
|
98
93
|
interface TableRef {
|
|
99
94
|
readonly name: string;
|
|
@@ -107,7 +102,6 @@ declare class DerivedTableSource extends FromSource {
|
|
|
107
102
|
static as(alias: string, query: SelectAst): DerivedTableSource;
|
|
108
103
|
rewrite(rewriter: AstRewriter): AnyFromSource;
|
|
109
104
|
toFromSource(): AnyFromSource;
|
|
110
|
-
collectRefs(): PlanRefs;
|
|
111
105
|
}
|
|
112
106
|
declare class ColumnRef extends Expression {
|
|
113
107
|
readonly kind: "column-ref";
|
|
@@ -336,8 +330,10 @@ declare class ProjectionItem extends AstNode {
|
|
|
336
330
|
readonly kind: "projection-item";
|
|
337
331
|
readonly alias: string;
|
|
338
332
|
readonly expr: ProjectionExpr;
|
|
339
|
-
|
|
340
|
-
|
|
333
|
+
readonly codecId: string | undefined;
|
|
334
|
+
constructor(alias: string, expr: ProjectionExpr, codecId?: string);
|
|
335
|
+
static of(alias: string, expr: ProjectionExpr, codecId?: string): ProjectionItem;
|
|
336
|
+
withCodecId(codecId: string | undefined): ProjectionItem;
|
|
341
337
|
}
|
|
342
338
|
interface SelectAstOptions {
|
|
343
339
|
readonly from: AnyFromSource;
|
|
@@ -391,7 +387,6 @@ declare class SelectAst extends QueryAst {
|
|
|
391
387
|
rewrite(rewriter: AstRewriter): SelectAst;
|
|
392
388
|
collectColumnRefs(): ColumnRef[];
|
|
393
389
|
collectParamRefs(): ParamRef[];
|
|
394
|
-
collectRefs(): PlanRefs;
|
|
395
390
|
toQueryAst(): AnyQueryAst;
|
|
396
391
|
}
|
|
397
392
|
declare abstract class InsertOnConflictAction extends AstNode {
|
|
@@ -422,15 +417,15 @@ declare class InsertAst extends QueryAst {
|
|
|
422
417
|
readonly table: TableSource;
|
|
423
418
|
readonly rows: ReadonlyArray<Readonly<Record<string, InsertValue>>>;
|
|
424
419
|
readonly onConflict: InsertOnConflict | undefined;
|
|
425
|
-
readonly returning: ReadonlyArray<
|
|
426
|
-
constructor(table: TableSource, rows?: ReadonlyArray<Record<string, InsertValue>>, onConflict?: InsertOnConflict, returning?: ReadonlyArray<
|
|
420
|
+
readonly returning: ReadonlyArray<ProjectionItem> | undefined;
|
|
421
|
+
constructor(table: TableSource, rows?: ReadonlyArray<Record<string, InsertValue>>, onConflict?: InsertOnConflict, returning?: ReadonlyArray<ProjectionItem>);
|
|
427
422
|
static into(table: TableSource): InsertAst;
|
|
428
423
|
withValues(values: Record<string, InsertValue>): InsertAst;
|
|
429
424
|
withRows(rows: ReadonlyArray<Record<string, InsertValue>>): InsertAst;
|
|
430
|
-
withReturning(returning: ReadonlyArray<
|
|
425
|
+
withReturning(returning: ReadonlyArray<ProjectionItem> | undefined): InsertAst;
|
|
431
426
|
withOnConflict(onConflict: InsertOnConflict | undefined): InsertAst;
|
|
427
|
+
rewrite(rewriter: AstRewriter): InsertAst;
|
|
432
428
|
collectParamRefs(): ParamRef[];
|
|
433
|
-
collectRefs(): PlanRefs;
|
|
434
429
|
toQueryAst(): AnyQueryAst;
|
|
435
430
|
}
|
|
436
431
|
declare class UpdateAst extends QueryAst {
|
|
@@ -438,27 +433,27 @@ declare class UpdateAst extends QueryAst {
|
|
|
438
433
|
readonly table: TableSource;
|
|
439
434
|
readonly set: Readonly<Record<string, ColumnRef | ParamRef>>;
|
|
440
435
|
readonly where: AnyExpression | undefined;
|
|
441
|
-
readonly returning: ReadonlyArray<
|
|
442
|
-
constructor(table: TableSource, set?: Readonly<Record<string, ColumnRef | ParamRef>>, where?: AnyExpression, returning?: ReadonlyArray<
|
|
436
|
+
readonly returning: ReadonlyArray<ProjectionItem> | undefined;
|
|
437
|
+
constructor(table: TableSource, set?: Readonly<Record<string, ColumnRef | ParamRef>>, where?: AnyExpression, returning?: ReadonlyArray<ProjectionItem>);
|
|
443
438
|
static table(table: TableSource): UpdateAst;
|
|
444
439
|
withSet(set: Readonly<Record<string, ColumnRef | ParamRef>>): UpdateAst;
|
|
445
440
|
withWhere(where: AnyExpression | undefined): UpdateAst;
|
|
446
|
-
withReturning(returning: ReadonlyArray<
|
|
441
|
+
withReturning(returning: ReadonlyArray<ProjectionItem> | undefined): UpdateAst;
|
|
442
|
+
rewrite(rewriter: AstRewriter): UpdateAst;
|
|
447
443
|
collectParamRefs(): ParamRef[];
|
|
448
|
-
collectRefs(): PlanRefs;
|
|
449
444
|
toQueryAst(): AnyQueryAst;
|
|
450
445
|
}
|
|
451
446
|
declare class DeleteAst extends QueryAst {
|
|
452
447
|
readonly kind: "delete";
|
|
453
448
|
readonly table: TableSource;
|
|
454
449
|
readonly where: AnyExpression | undefined;
|
|
455
|
-
readonly returning: ReadonlyArray<
|
|
456
|
-
constructor(table: TableSource, where?: AnyExpression, returning?: ReadonlyArray<
|
|
450
|
+
readonly returning: ReadonlyArray<ProjectionItem> | undefined;
|
|
451
|
+
constructor(table: TableSource, where?: AnyExpression, returning?: ReadonlyArray<ProjectionItem>);
|
|
457
452
|
static from(table: TableSource): DeleteAst;
|
|
458
453
|
withWhere(where: AnyExpression | undefined): DeleteAst;
|
|
459
|
-
withReturning(returning: ReadonlyArray<
|
|
454
|
+
withReturning(returning: ReadonlyArray<ProjectionItem> | undefined): DeleteAst;
|
|
455
|
+
rewrite(rewriter: AstRewriter): DeleteAst;
|
|
460
456
|
collectParamRefs(): ParamRef[];
|
|
461
|
-
collectRefs(): PlanRefs;
|
|
462
457
|
toQueryAst(): AnyQueryAst;
|
|
463
458
|
}
|
|
464
459
|
type AnyQueryAst = SelectAst | InsertAst | UpdateAst | DeleteAst;
|
|
@@ -481,4 +476,4 @@ interface LoweredStatement {
|
|
|
481
476
|
}
|
|
482
477
|
//#endregion
|
|
483
478
|
export { ToWhereExpr as $, InsertOnConflict as A, NotExpr as B, ExistsExpr as C, ExpressionSource as D, ExpressionRewriter as E, JsonObjectEntry as F, ParamRef as G, OperationExpr as H, JsonObjectExpr as I, SelectAst as J, ProjectionExpr as K, ListExpression as L, JoinAst as M, JoinOnExpr as N, IdentifierRef as O, JsonArrayAggExpr as P, TableSource as Q, LiteralExpr as R, EqColJoinOn as S, ExpressionFolder as T, OrExpr as U, NullCheckExpr as V, OrderByItem as W, SubqueryExpr as X, SelectAstOptions as Y, TableRef as Z, DeleteAst as _, AndExpr as a, whereExprKinds as at, DoNothingConflictAction as b, AnyInsertOnConflictAction as c, AnyQueryAst as d, UpdateAst as et, AstRewriter as f, DefaultValueExpr as g, ColumnRef as h, AggregateOpFn as i, queryAstKinds as it, InsertValue as j, InsertAst as k, AnyInsertValue as l, BinaryOp as m, AggregateExpr as n, isQueryAst as nt, AnyExpression as o, BinaryExpr as p, ProjectionItem as q, AggregateFn as r, isWhereExpr as rt, AnyFromSource as s, AggregateCountFn as t, WhereArg as tt, AnyOperationArg as u, DerivedTableSource as v, ExprVisitor as w, DoUpdateSetConflictAction as x, Direction as y, LoweredStatement as z };
|
|
484
|
-
//# sourceMappingURL=types-
|
|
479
|
+
//# sourceMappingURL=types-B4dL4lc3.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types-B4dL4lc3.d.mts","names":[],"sources":["../src/ast/types.ts"],"sourcesContent":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { t as SqlExecutionPlan } from "./sql-execution-plan-
|
|
2
|
-
import { t as SqlQueryPlan } from "./plan-
|
|
1
|
+
import { t as SqlExecutionPlan } from "./sql-execution-plan-Dgx7BGin.mjs";
|
|
2
|
+
import { t as SqlQueryPlan } from "./plan-C7SiEWkN.mjs";
|
|
3
3
|
import { RuntimeExecutor } from "@prisma-next/framework-components/runtime";
|
|
4
4
|
|
|
5
5
|
//#region src/runtime-scope.d.ts
|
|
@@ -21,4 +21,4 @@ type SqlOrmPlan = SqlExecutionPlan | SqlQueryPlan;
|
|
|
21
21
|
type RuntimeScope = Pick<RuntimeExecutor<SqlOrmPlan>, 'execute'>;
|
|
22
22
|
//#endregion
|
|
23
23
|
export { SqlOrmPlan as n, RuntimeScope as t };
|
|
24
|
-
//# sourceMappingURL=types-
|
|
24
|
+
//# sourceMappingURL=types-BUlUvdIU.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types-
|
|
1
|
+
{"version":3,"file":"types-BUlUvdIU.d.mts","names":[],"sources":["../src/runtime-scope.ts"],"sourcesContent":[],"mappings":";;;;;;;;AASA;AAUA;;AAAgC,KAVpB,UAAA,GAAa,gBAUO,GAVY,YAUZ;;;;;;;;;KAApB,YAAA,GAAe,KAAK,gBAAgB"}
|
|
@@ -53,39 +53,60 @@ function collectParamRefsWith(node) {
|
|
|
53
53
|
select: (ast) => ast.collectParamRefs()
|
|
54
54
|
});
|
|
55
55
|
}
|
|
56
|
-
function
|
|
57
|
-
return
|
|
58
|
-
tables: [...tables].sort((a, b) => a.localeCompare(b)),
|
|
59
|
-
columns: [...columns.values()].sort((a, b) => {
|
|
60
|
-
const tableCompare = a.table.localeCompare(b.table);
|
|
61
|
-
if (tableCompare !== 0) return tableCompare;
|
|
62
|
-
return a.column.localeCompare(b.column);
|
|
63
|
-
})
|
|
64
|
-
};
|
|
56
|
+
function rewriteTableSource(table, rewriter) {
|
|
57
|
+
return rewriter.tableSource ? rewriter.tableSource(table) : table;
|
|
65
58
|
}
|
|
66
|
-
function
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
59
|
+
function rewriteProjectionItem(item, rewriter) {
|
|
60
|
+
const rewrittenExpr = item.expr.kind === "literal" ? rewriter.literal ? rewriter.literal(item.expr) : item.expr : item.expr.rewrite(rewriter);
|
|
61
|
+
return new ProjectionItem(item.alias, rewrittenExpr, item.codecId);
|
|
62
|
+
}
|
|
63
|
+
function rewriteInsertValue(value, rewriter) {
|
|
64
|
+
switch (value.kind) {
|
|
65
|
+
case "param-ref": return rewriter.paramRef ? rewriteParamRefForInsert(value, rewriter) : value;
|
|
66
|
+
case "column-ref": return rewriter.columnRef ? rewriteColumnRefForInsert(value, rewriter) : value;
|
|
67
|
+
case "default-value": return value;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function rewriteParamRefForInsert(value, rewriter) {
|
|
71
|
+
const rewritten = rewriter.paramRef ? rewriter.paramRef(value) : value;
|
|
72
|
+
return rewritten.kind === "param-ref" ? rewritten : value;
|
|
73
|
+
}
|
|
74
|
+
function rewriteColumnRefForInsert(value, rewriter) {
|
|
75
|
+
const rewritten = rewriter.columnRef ? rewriter.columnRef(value) : value;
|
|
76
|
+
return rewritten.kind === "column-ref" ? rewritten : value;
|
|
77
|
+
}
|
|
78
|
+
function rewriteInsertRow(row, rewriter) {
|
|
79
|
+
const result = {};
|
|
80
|
+
for (const [key, value] of Object.entries(row)) result[key] = rewriteInsertValue(value, rewriter);
|
|
81
|
+
return result;
|
|
82
|
+
}
|
|
83
|
+
function rewriteUpdateSetValue(value, rewriter) {
|
|
84
|
+
if (value.kind === "column-ref") {
|
|
85
|
+
const rewritten$1 = rewriter.columnRef ? rewriter.columnRef(value) : value;
|
|
86
|
+
return rewritten$1.kind === "column-ref" ? rewritten$1 : value;
|
|
87
|
+
}
|
|
88
|
+
const rewritten = rewriter.paramRef ? rewriter.paramRef(value) : value;
|
|
89
|
+
return rewritten.kind === "param-ref" ? rewritten : value;
|
|
74
90
|
}
|
|
75
|
-
function
|
|
76
|
-
|
|
77
|
-
for (const
|
|
91
|
+
function rewriteUpdateSet(set, rewriter) {
|
|
92
|
+
const result = {};
|
|
93
|
+
for (const [key, value] of Object.entries(set)) result[key] = rewriteUpdateSetValue(value, rewriter);
|
|
94
|
+
return result;
|
|
95
|
+
}
|
|
96
|
+
function rewriteOnConflict(onConflict, rewriter) {
|
|
97
|
+
const columns = onConflict.columns.map((columnRef) => {
|
|
98
|
+
const rewritten = rewriter.columnRef ? rewriter.columnRef(columnRef) : columnRef;
|
|
99
|
+
return rewritten.kind === "column-ref" ? rewritten : columnRef;
|
|
100
|
+
});
|
|
101
|
+
if (onConflict.action.kind === "do-nothing") return new InsertOnConflict(columns, new DoNothingConflictAction());
|
|
102
|
+
return new InsertOnConflict(columns, new DoUpdateSetConflictAction(rewriteUpdateSet(onConflict.action.set, rewriter)));
|
|
78
103
|
}
|
|
79
104
|
var AstNode = class {
|
|
80
105
|
freeze() {
|
|
81
106
|
Object.freeze(this);
|
|
82
107
|
}
|
|
83
108
|
};
|
|
84
|
-
var QueryAst = class extends AstNode {
|
|
85
|
-
collectColumnRefs() {
|
|
86
|
-
return (this.collectRefs().columns ?? []).map((ref) => new ColumnRef(ref.table, ref.column));
|
|
87
|
-
}
|
|
88
|
-
};
|
|
109
|
+
var QueryAst = class extends AstNode {};
|
|
89
110
|
var FromSource = class extends AstNode {};
|
|
90
111
|
var Expression = class extends AstNode {
|
|
91
112
|
collectColumnRefs() {
|
|
@@ -123,12 +144,6 @@ var TableSource = class TableSource extends FromSource {
|
|
|
123
144
|
toFromSource() {
|
|
124
145
|
return this;
|
|
125
146
|
}
|
|
126
|
-
collectRefs() {
|
|
127
|
-
return {
|
|
128
|
-
tables: [this.name],
|
|
129
|
-
columns: []
|
|
130
|
-
};
|
|
131
|
-
}
|
|
132
147
|
};
|
|
133
148
|
var DerivedTableSource = class DerivedTableSource extends FromSource {
|
|
134
149
|
kind = "derived-table-source";
|
|
@@ -149,9 +164,6 @@ var DerivedTableSource = class DerivedTableSource extends FromSource {
|
|
|
149
164
|
toFromSource() {
|
|
150
165
|
return this;
|
|
151
166
|
}
|
|
152
|
-
collectRefs() {
|
|
153
|
-
return this.query.collectRefs();
|
|
154
|
-
}
|
|
155
167
|
};
|
|
156
168
|
var ColumnRef = class ColumnRef extends Expression {
|
|
157
169
|
kind = "column-ref";
|
|
@@ -667,14 +679,19 @@ var ProjectionItem = class ProjectionItem extends AstNode {
|
|
|
667
679
|
kind = "projection-item";
|
|
668
680
|
alias;
|
|
669
681
|
expr;
|
|
670
|
-
|
|
682
|
+
codecId;
|
|
683
|
+
constructor(alias, expr, codecId) {
|
|
671
684
|
super();
|
|
672
685
|
this.alias = alias;
|
|
673
686
|
this.expr = expr;
|
|
687
|
+
this.codecId = codecId;
|
|
674
688
|
this.freeze();
|
|
675
689
|
}
|
|
676
|
-
static of(alias, expr) {
|
|
677
|
-
return new ProjectionItem(alias, expr);
|
|
690
|
+
static of(alias, expr, codecId) {
|
|
691
|
+
return new ProjectionItem(alias, expr, codecId);
|
|
692
|
+
}
|
|
693
|
+
withCodecId(codecId) {
|
|
694
|
+
return new ProjectionItem(this.alias, this.expr, codecId);
|
|
678
695
|
}
|
|
679
696
|
};
|
|
680
697
|
var SelectAst = class SelectAst extends QueryAst {
|
|
@@ -805,7 +822,7 @@ var SelectAst = class SelectAst extends QueryAst {
|
|
|
805
822
|
const rewritten = new SelectAst({
|
|
806
823
|
from: this.from.rewrite(rewriter),
|
|
807
824
|
joins: this.joins?.map((join) => join.rewrite(rewriter)),
|
|
808
|
-
projection: this.projection.map((projection) => new ProjectionItem(projection.alias, projection.expr.kind === "literal" ? rewriter.literal ? rewriter.literal(projection.expr) : projection.expr : projection.expr.rewrite(rewriter))),
|
|
825
|
+
projection: this.projection.map((projection) => new ProjectionItem(projection.alias, projection.expr.kind === "literal" ? rewriter.literal ? rewriter.literal(projection.expr) : projection.expr : projection.expr.rewrite(rewriter), projection.codecId)),
|
|
809
826
|
where: this.where?.rewrite(rewriter),
|
|
810
827
|
orderBy: this.orderBy?.map((orderItem) => orderItem.rewrite(rewriter)),
|
|
811
828
|
distinct: this.distinct,
|
|
@@ -855,23 +872,6 @@ var SelectAst = class SelectAst extends QueryAst {
|
|
|
855
872
|
}
|
|
856
873
|
return refs;
|
|
857
874
|
}
|
|
858
|
-
collectRefs() {
|
|
859
|
-
const tables = /* @__PURE__ */ new Set();
|
|
860
|
-
const columns = /* @__PURE__ */ new Map();
|
|
861
|
-
const addSource = (source) => {
|
|
862
|
-
mergeRefsInto(source.collectRefs(), tables, columns);
|
|
863
|
-
};
|
|
864
|
-
addSource(this.from);
|
|
865
|
-
for (const join of this.joins ?? []) {
|
|
866
|
-
addSource(join.source);
|
|
867
|
-
if (join.on.kind === "eq-col-join-on") {
|
|
868
|
-
addColumnRefToRefSets(join.on.left, tables, columns);
|
|
869
|
-
addColumnRefToRefSets(join.on.right, tables, columns);
|
|
870
|
-
} else for (const columnRef of join.on.collectColumnRefs()) addColumnRefToRefSets(columnRef, tables, columns);
|
|
871
|
-
}
|
|
872
|
-
for (const columnRef of this.collectColumnRefs()) addColumnRefToRefSets(columnRef, tables, columns);
|
|
873
|
-
return sortRefs(tables, columns);
|
|
874
|
-
}
|
|
875
875
|
toQueryAst() {
|
|
876
876
|
return this;
|
|
877
877
|
}
|
|
@@ -948,31 +948,18 @@ var InsertAst = class InsertAst extends QueryAst {
|
|
|
948
948
|
withOnConflict(onConflict) {
|
|
949
949
|
return new InsertAst(this.table, this.rows.map((row) => ({ ...row })), onConflict, this.returning);
|
|
950
950
|
}
|
|
951
|
+
rewrite(rewriter) {
|
|
952
|
+
return new InsertAst(rewriteTableSource(this.table, rewriter), this.rows.map((row) => rewriteInsertRow(row, rewriter)), this.onConflict ? rewriteOnConflict(this.onConflict, rewriter) : void 0, this.returning?.map((item) => rewriteProjectionItem(item, rewriter)));
|
|
953
|
+
}
|
|
951
954
|
collectParamRefs() {
|
|
952
955
|
const refs = [];
|
|
953
956
|
for (const row of this.rows) for (const value of Object.values(row)) if (value.kind === "param-ref") refs.push(value);
|
|
954
957
|
if (this.onConflict?.action.kind === "do-update-set") {
|
|
955
958
|
for (const value of Object.values(this.onConflict.action.set)) if (value.kind === "param-ref") refs.push(value);
|
|
956
959
|
}
|
|
960
|
+
for (const item of this.returning ?? []) if (item.expr.kind !== "literal") refs.push(...item.expr.collectParamRefs());
|
|
957
961
|
return refs;
|
|
958
962
|
}
|
|
959
|
-
collectRefs() {
|
|
960
|
-
const tables = new Set([this.table.name]);
|
|
961
|
-
const columns = /* @__PURE__ */ new Map();
|
|
962
|
-
const addColumn = (columnRef) => addColumnRefToRefSets(columnRef, tables, columns);
|
|
963
|
-
const addValue = (value) => {
|
|
964
|
-
if (value.kind === "column-ref") addColumn(value);
|
|
965
|
-
};
|
|
966
|
-
for (const row of this.rows) for (const value of Object.values(row)) addValue(value);
|
|
967
|
-
for (const columnRef of this.returning ?? []) addColumn(columnRef);
|
|
968
|
-
if (this.onConflict) {
|
|
969
|
-
for (const columnRef of this.onConflict.columns) addColumn(columnRef);
|
|
970
|
-
if (this.onConflict.action.kind === "do-update-set") {
|
|
971
|
-
for (const value of Object.values(this.onConflict.action.set)) if (value.kind === "column-ref") addColumn(value);
|
|
972
|
-
}
|
|
973
|
-
}
|
|
974
|
-
return sortRefs(tables, columns);
|
|
975
|
-
}
|
|
976
963
|
toQueryAst() {
|
|
977
964
|
return this;
|
|
978
965
|
}
|
|
@@ -1003,20 +990,16 @@ var UpdateAst = class UpdateAst extends QueryAst {
|
|
|
1003
990
|
withReturning(returning) {
|
|
1004
991
|
return new UpdateAst(this.table, this.set, this.where, returning);
|
|
1005
992
|
}
|
|
993
|
+
rewrite(rewriter) {
|
|
994
|
+
return new UpdateAst(rewriteTableSource(this.table, rewriter), rewriteUpdateSet(this.set, rewriter), this.where?.rewrite(rewriter), this.returning?.map((item) => rewriteProjectionItem(item, rewriter)));
|
|
995
|
+
}
|
|
1006
996
|
collectParamRefs() {
|
|
1007
997
|
const refs = [];
|
|
1008
998
|
for (const value of Object.values(this.set)) if (value.kind === "param-ref") refs.push(value);
|
|
1009
999
|
if (this.where) refs.push(...this.where.collectParamRefs());
|
|
1000
|
+
for (const item of this.returning ?? []) if (item.expr.kind !== "literal") refs.push(...item.expr.collectParamRefs());
|
|
1010
1001
|
return refs;
|
|
1011
1002
|
}
|
|
1012
|
-
collectRefs() {
|
|
1013
|
-
const tables = new Set([this.table.name]);
|
|
1014
|
-
const columns = /* @__PURE__ */ new Map();
|
|
1015
|
-
for (const value of Object.values(this.set)) if (value.kind === "column-ref") addColumnRefToRefSets(value, tables, columns);
|
|
1016
|
-
for (const columnRef of this.where?.collectColumnRefs() ?? []) addColumnRefToRefSets(columnRef, tables, columns);
|
|
1017
|
-
for (const columnRef of this.returning ?? []) addColumnRefToRefSets(columnRef, tables, columns);
|
|
1018
|
-
return sortRefs(tables, columns);
|
|
1019
|
-
}
|
|
1020
1003
|
toQueryAst() {
|
|
1021
1004
|
return this;
|
|
1022
1005
|
}
|
|
@@ -1042,15 +1025,14 @@ var DeleteAst = class DeleteAst extends QueryAst {
|
|
|
1042
1025
|
withReturning(returning) {
|
|
1043
1026
|
return new DeleteAst(this.table, this.where, returning);
|
|
1044
1027
|
}
|
|
1045
|
-
|
|
1046
|
-
return this.where?.
|
|
1028
|
+
rewrite(rewriter) {
|
|
1029
|
+
return new DeleteAst(rewriteTableSource(this.table, rewriter), this.where?.rewrite(rewriter), this.returning?.map((item) => rewriteProjectionItem(item, rewriter)));
|
|
1047
1030
|
}
|
|
1048
|
-
|
|
1049
|
-
const
|
|
1050
|
-
|
|
1051
|
-
for (const
|
|
1052
|
-
|
|
1053
|
-
return sortRefs(tables, columns);
|
|
1031
|
+
collectParamRefs() {
|
|
1032
|
+
const refs = [];
|
|
1033
|
+
if (this.where) refs.push(...this.where.collectParamRefs());
|
|
1034
|
+
for (const item of this.returning ?? []) if (item.expr.kind !== "literal") refs.push(...item.expr.collectParamRefs());
|
|
1035
|
+
return refs;
|
|
1054
1036
|
}
|
|
1055
1037
|
toQueryAst() {
|
|
1056
1038
|
return this;
|
|
@@ -1079,4 +1061,4 @@ function isWhereExpr(value) {
|
|
|
1079
1061
|
|
|
1080
1062
|
//#endregion
|
|
1081
1063
|
export { UpdateAst as A, OrExpr as C, SelectAst as D, ProjectionItem as E, isWhereExpr as M, queryAstKinds as N, SubqueryExpr as O, whereExprKinds as P, OperationExpr as S, ParamRef as T, JsonObjectExpr as _, DefaultValueExpr as a, NotExpr as b, DoNothingConflictAction as c, ExistsExpr as d, IdentifierRef as f, JsonArrayAggExpr as g, JoinAst as h, ColumnRef as i, isQueryAst as j, TableSource as k, DoUpdateSetConflictAction as l, InsertOnConflict as m, AndExpr as n, DeleteAst as o, InsertAst as p, BinaryExpr as r, DerivedTableSource as s, AggregateExpr as t, EqColJoinOn as u, ListExpression as v, OrderByItem as w, NullCheckExpr as x, LiteralExpr as y };
|
|
1082
|
-
//# sourceMappingURL=types
|
|
1064
|
+
//# sourceMappingURL=types-DUL-3vy6.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types-DUL-3vy6.mjs","names":["result: Record<string, InsertValue>","rewritten","result: Record<string, ColumnRef | ParamRef>","refs: ColumnRef[]","refs: ParamRef[]","queryAstKinds: ReadonlySet<string>","whereExprKinds: ReadonlySet<string>"],"sources":["../src/ast/types.ts"],"sourcesContent":["import type { ParamSpec } from '@prisma-next/operations';\nimport type { SqlLoweringSpec } from '@prisma-next/sql-operations';\n\nexport type Direction = 'asc' | 'desc';\n\nexport type BinaryOp = 'eq' | 'neq' | 'gt' | 'lt' | 'gte' | 'lte' | 'like' | 'in' | 'notIn';\n\nexport type AggregateCountFn = 'count';\nexport type AggregateOpFn = 'sum' | 'avg' | 'min' | 'max';\nexport type AggregateFn = AggregateCountFn | AggregateOpFn;\n\nexport interface ExpressionSource {\n toExpr(): AnyExpression;\n}\n\nexport interface ExpressionRewriter {\n columnRef?(expr: ColumnRef): AnyExpression;\n identifierRef?(expr: IdentifierRef): AnyExpression;\n paramRef?(expr: ParamRef): ParamRef | LiteralExpr;\n literal?(expr: LiteralExpr): LiteralExpr;\n list?(expr: ListExpression): ListExpression | LiteralExpr;\n select?(ast: SelectAst): SelectAst;\n}\n\nexport interface AstRewriter extends ExpressionRewriter {\n tableSource?(source: TableSource): TableSource;\n eqColJoinOn?(on: EqColJoinOn): EqColJoinOn | AnyExpression;\n}\n\nexport interface ExprVisitor<R> {\n columnRef(expr: ColumnRef): R;\n identifierRef(expr: IdentifierRef): R;\n subquery(expr: SubqueryExpr): R;\n operation(expr: OperationExpr): R;\n aggregate(expr: AggregateExpr): R;\n jsonObject(expr: JsonObjectExpr): R;\n jsonArrayAgg(expr: JsonArrayAggExpr): R;\n binary(expr: BinaryExpr): R;\n and(expr: AndExpr): R;\n or(expr: OrExpr): R;\n exists(expr: ExistsExpr): R;\n nullCheck(expr: NullCheckExpr): R;\n not(expr: NotExpr): R;\n literal(expr: LiteralExpr): R;\n param(expr: ParamRef): R;\n list(expr: ListExpression): R;\n}\n\nexport interface ExpressionFolder<T> {\n empty: T;\n combine(a: T, b: T): T;\n isAbsorbing?(value: T): boolean;\n columnRef?(expr: ColumnRef): T;\n identifierRef?(expr: IdentifierRef): T;\n paramRef?(expr: ParamRef): T;\n literal?(expr: LiteralExpr): T;\n list?(expr: ListExpression): T;\n select?(ast: SelectAst): T;\n}\n\nexport type ProjectionExpr = AnyExpression;\nexport type InsertValue = ColumnRef | ParamRef | DefaultValueExpr;\nexport type JoinOnExpr = EqColJoinOn | AnyExpression;\nexport type WhereArg = AnyExpression | ToWhereExpr;\nexport type JsonObjectEntry = {\n readonly key: string;\n readonly value: ProjectionExpr;\n};\n\nfunction frozenArrayCopy<T>(values: readonly T[]): ReadonlyArray<T> {\n return Object.freeze([...values]);\n}\n\nfunction frozenOptionalRecordCopy<T extends Record<string, unknown>>(\n value: T | undefined,\n): Readonly<T> | undefined {\n return value === undefined ? undefined : Object.freeze({ ...value });\n}\n\nfunction frozenRecordCopy<T>(record: Readonly<Record<string, T>>): Readonly<Record<string, T>> {\n return Object.freeze({ ...record });\n}\n\nfunction freezeRows(\n rows: ReadonlyArray<Record<string, InsertValue>>,\n): ReadonlyArray<Readonly<Record<string, InsertValue>>> {\n return Object.freeze(rows.map((row) => Object.freeze({ ...row })));\n}\n\nfunction combineAll<T>(folder: ExpressionFolder<T>, thunks: Array<() => T>): T {\n let result = folder.empty;\n for (const thunk of thunks) {\n if (folder.isAbsorbing?.(result)) {\n return result;\n }\n result = folder.combine(result, thunk());\n }\n return result;\n}\n\nfunction rewriteComparable(value: AnyExpression, rewriter: ExpressionRewriter): AnyExpression {\n switch (value.kind) {\n case 'param-ref':\n return rewriter.paramRef ? rewriter.paramRef(value) : value;\n case 'literal':\n return rewriter.literal ? rewriter.literal(value) : value;\n case 'list':\n if (rewriter.list) {\n return rewriter.list(value);\n }\n return value.rewrite(rewriter);\n default:\n return value.rewrite(rewriter);\n }\n}\n\nfunction foldComparable<T>(value: AnyExpression, folder: ExpressionFolder<T>): T {\n switch (value.kind) {\n case 'param-ref':\n return folder.paramRef ? folder.paramRef(value) : folder.empty;\n case 'literal':\n return folder.literal ? folder.literal(value) : folder.empty;\n case 'list':\n return value.fold(folder);\n default:\n return value.fold(folder);\n }\n}\n\nfunction collectColumnRefsWith<TNode extends Expression>(node: TNode): ColumnRef[] {\n return node.fold<ColumnRef[]>({\n empty: [],\n combine: (a, b) => [...a, ...b],\n columnRef: (columnRef) => [columnRef],\n select: (ast) => ast.collectColumnRefs(),\n });\n}\n\nfunction collectParamRefsWith<TNode extends Expression>(node: TNode): ParamRef[] {\n return node.fold<ParamRef[]>({\n empty: [],\n combine: (a, b) => [...a, ...b],\n paramRef: (paramRef) => [paramRef],\n select: (ast) => ast.collectParamRefs(),\n });\n}\n\nfunction rewriteTableSource(table: TableSource, rewriter: AstRewriter): TableSource {\n return rewriter.tableSource ? rewriter.tableSource(table) : table;\n}\n\nfunction rewriteProjectionItem(item: ProjectionItem, rewriter: AstRewriter): ProjectionItem {\n const rewrittenExpr =\n item.expr.kind === 'literal'\n ? rewriter.literal\n ? rewriter.literal(item.expr)\n : item.expr\n : item.expr.rewrite(rewriter);\n return new ProjectionItem(item.alias, rewrittenExpr, item.codecId);\n}\n\nfunction rewriteInsertValue(value: InsertValue, rewriter: AstRewriter): InsertValue {\n switch (value.kind) {\n case 'param-ref':\n return rewriter.paramRef ? rewriteParamRefForInsert(value, rewriter) : value;\n case 'column-ref':\n return rewriter.columnRef ? rewriteColumnRefForInsert(value, rewriter) : value;\n case 'default-value':\n return value;\n }\n}\n\nfunction rewriteParamRefForInsert(value: ParamRef, rewriter: AstRewriter): InsertValue {\n const rewritten = rewriter.paramRef ? rewriter.paramRef(value) : value;\n return rewritten.kind === 'param-ref' ? rewritten : value;\n}\n\nfunction rewriteColumnRefForInsert(value: ColumnRef, rewriter: AstRewriter): InsertValue {\n const rewritten = rewriter.columnRef ? rewriter.columnRef(value) : value;\n return rewritten.kind === 'column-ref' ? rewritten : value;\n}\n\nfunction rewriteInsertRow(\n row: Readonly<Record<string, InsertValue>>,\n rewriter: AstRewriter,\n): Record<string, InsertValue> {\n const result: Record<string, InsertValue> = {};\n for (const [key, value] of Object.entries(row)) {\n result[key] = rewriteInsertValue(value, rewriter);\n }\n return result;\n}\n\nfunction rewriteUpdateSetValue(\n value: ColumnRef | ParamRef,\n rewriter: AstRewriter,\n): ColumnRef | ParamRef {\n if (value.kind === 'column-ref') {\n const rewritten = rewriter.columnRef ? rewriter.columnRef(value) : value;\n return rewritten.kind === 'column-ref' ? rewritten : value;\n }\n const rewritten = rewriter.paramRef ? rewriter.paramRef(value) : value;\n return rewritten.kind === 'param-ref' ? rewritten : value;\n}\n\nfunction rewriteUpdateSet(\n set: Readonly<Record<string, ColumnRef | ParamRef>>,\n rewriter: AstRewriter,\n): Record<string, ColumnRef | ParamRef> {\n const result: Record<string, ColumnRef | ParamRef> = {};\n for (const [key, value] of Object.entries(set)) {\n result[key] = rewriteUpdateSetValue(value, rewriter);\n }\n return result;\n}\n\nfunction rewriteOnConflict(onConflict: InsertOnConflict, rewriter: AstRewriter): InsertOnConflict {\n const columns = onConflict.columns.map((columnRef) => {\n const rewritten = rewriter.columnRef ? rewriter.columnRef(columnRef) : columnRef;\n return rewritten.kind === 'column-ref' ? rewritten : columnRef;\n });\n\n if (onConflict.action.kind === 'do-nothing') {\n return new InsertOnConflict(columns, new DoNothingConflictAction());\n }\n\n return new InsertOnConflict(\n columns,\n new DoUpdateSetConflictAction(rewriteUpdateSet(onConflict.action.set, rewriter)),\n );\n}\n\nabstract class AstNode {\n abstract readonly kind: string;\n\n protected freeze(): void {\n Object.freeze(this);\n }\n}\n\nabstract class QueryAst extends AstNode {\n abstract collectParamRefs(): ParamRef[];\n abstract toQueryAst(): AnyQueryAst;\n}\n\nabstract class FromSource extends AstNode {\n abstract rewrite(rewriter: AstRewriter): AnyFromSource;\n abstract toFromSource(): AnyFromSource;\n}\n\nabstract class Expression extends AstNode implements ExpressionSource {\n abstract accept<R>(visitor: ExprVisitor<R>): R;\n abstract rewrite(rewriter: ExpressionRewriter): AnyExpression;\n abstract fold<T>(folder: ExpressionFolder<T>): T;\n\n collectColumnRefs(): ColumnRef[] {\n return collectColumnRefsWith(this);\n }\n\n collectParamRefs(): ParamRef[] {\n return collectParamRefsWith(this);\n }\n\n baseColumnRef(): ColumnRef {\n throw new Error(`${this.constructor.name} does not expose a base column reference`);\n }\n\n toExpr(): AnyExpression {\n return this as unknown as AnyExpression;\n }\n\n not(): NotExpr {\n return new NotExpr(this as unknown as AnyExpression);\n }\n}\n\nexport class TableSource extends FromSource {\n readonly kind = 'table-source' as const;\n readonly name: string;\n readonly alias: string | undefined;\n\n constructor(name: string, alias?: string) {\n super();\n this.name = name;\n this.alias = alias;\n this.freeze();\n }\n\n static named(name: string, alias?: string): TableSource {\n return new TableSource(name, alias);\n }\n\n override rewrite(rewriter: AstRewriter): AnyFromSource {\n return rewriter.tableSource ? rewriter.tableSource(this) : this;\n }\n\n override toFromSource(): AnyFromSource {\n return this;\n }\n}\n\nexport interface TableRef {\n readonly name: string;\n readonly alias?: string;\n}\n\nexport class DerivedTableSource extends FromSource {\n readonly kind = 'derived-table-source' as const;\n readonly alias: string;\n readonly query: SelectAst;\n\n constructor(alias: string, query: SelectAst) {\n super();\n this.alias = alias;\n this.query = query;\n this.freeze();\n }\n\n static as(alias: string, query: SelectAst): DerivedTableSource {\n return new DerivedTableSource(alias, query);\n }\n\n // Intentionally does not call rewriter.tableSource — derived tables are rewritten\n // via their inner query, not intercepted at the FromSource level. A future\n // fromSource?(source: AnyFromSource) callback would be needed for that.\n override rewrite(rewriter: AstRewriter): AnyFromSource {\n return new DerivedTableSource(this.alias, this.query.rewrite(rewriter));\n }\n\n override toFromSource(): AnyFromSource {\n return this;\n }\n}\n\nexport class ColumnRef extends Expression {\n readonly kind = 'column-ref' as const;\n readonly table: string;\n readonly column: string;\n\n constructor(table: string, column: string) {\n super();\n this.table = table;\n this.column = column;\n this.freeze();\n }\n\n static of(table: string, column: string): ColumnRef {\n return new ColumnRef(table, column);\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.columnRef(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return rewriter.columnRef ? rewriter.columnRef(this) : this;\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return folder.columnRef ? folder.columnRef(this) : folder.empty;\n }\n\n override baseColumnRef(): ColumnRef {\n return this;\n }\n}\n\nexport class IdentifierRef extends Expression {\n readonly kind = 'identifier-ref' as const;\n readonly name: string;\n\n constructor(name: string) {\n super();\n this.name = name;\n this.freeze();\n }\n\n static of(name: string): IdentifierRef {\n return new IdentifierRef(name);\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.identifierRef(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return rewriter.identifierRef ? rewriter.identifierRef(this) : this;\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return folder.identifierRef ? folder.identifierRef(this) : folder.empty;\n }\n}\n\nexport class ParamRef extends Expression {\n readonly kind = 'param-ref' as const;\n readonly value: unknown;\n readonly name: string | undefined;\n readonly codecId: string | undefined;\n\n constructor(\n value: unknown,\n options?: {\n name?: string;\n codecId?: string;\n },\n ) {\n super();\n this.value = value;\n this.name = options?.name;\n this.codecId = options?.codecId;\n this.freeze();\n }\n\n static of(\n value: unknown,\n options?: {\n name?: string;\n codecId?: string;\n },\n ): ParamRef {\n return new ParamRef(value, options);\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.param(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return rewriter.paramRef ? rewriter.paramRef(this) : this;\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return folder.paramRef ? folder.paramRef(this) : folder.empty;\n }\n}\n\nexport class DefaultValueExpr extends AstNode {\n readonly kind = 'default-value' as const;\n\n constructor() {\n super();\n this.freeze();\n }\n}\n\nexport class LiteralExpr extends Expression {\n readonly kind = 'literal' as const;\n readonly value: unknown;\n\n constructor(value: unknown) {\n super();\n this.value = value;\n this.freeze();\n }\n\n static of(value: unknown): LiteralExpr {\n return new LiteralExpr(value);\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.literal(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return rewriter.literal ? rewriter.literal(this) : this;\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return folder.literal ? folder.literal(this) : folder.empty;\n }\n}\n\nexport class SubqueryExpr extends Expression {\n readonly kind = 'subquery' as const;\n readonly query: SelectAst;\n\n constructor(query: SelectAst) {\n super();\n this.query = query;\n this.freeze();\n }\n\n static of(query: SelectAst): SubqueryExpr {\n return new SubqueryExpr(query);\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.subquery(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n const query = this.query.rewrite(rewriter);\n return new SubqueryExpr(query);\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return folder.select ? folder.select(this.query) : folder.empty;\n }\n}\n\nexport class OperationExpr extends Expression {\n readonly kind = 'operation' as const;\n readonly method: string;\n readonly self: AnyExpression;\n readonly args: ReadonlyArray<AnyExpression | ParamRef | LiteralExpr>;\n readonly returns: ParamSpec;\n readonly lowering: SqlLoweringSpec;\n\n constructor(options: {\n readonly method: string;\n readonly self: AnyExpression;\n readonly args: ReadonlyArray<AnyExpression | ParamRef | LiteralExpr> | undefined;\n readonly returns: ParamSpec;\n readonly lowering: SqlLoweringSpec;\n }) {\n super();\n this.method = options.method;\n this.self = options.self;\n this.args = frozenArrayCopy(options.args ?? []);\n this.returns = options.returns;\n this.lowering = options.lowering;\n this.freeze();\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.operation(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return new OperationExpr({\n method: this.method,\n self: this.self.rewrite(rewriter),\n args: this.args.map((arg) => rewriteComparable(arg, rewriter)) as ReadonlyArray<\n AnyExpression | ParamRef | LiteralExpr\n >,\n returns: this.returns,\n lowering: this.lowering,\n });\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return combineAll(folder, [\n () => this.self.fold(folder),\n ...this.args.map((arg) => () => foldComparable(arg, folder)),\n ]);\n }\n\n override baseColumnRef(): ColumnRef {\n return this.self.baseColumnRef();\n }\n}\n\nexport class AggregateExpr extends Expression {\n readonly kind = 'aggregate' as const;\n readonly fn: AggregateFn;\n readonly expr: AnyExpression | undefined;\n\n constructor(fn: AggregateFn, expr?: AnyExpression) {\n super();\n if (fn !== 'count' && expr === undefined) {\n throw new Error(`Aggregate function \"${fn}\" requires an expression`);\n }\n this.fn = fn;\n this.expr = expr;\n this.freeze();\n }\n\n static count(expr?: AnyExpression): AggregateExpr {\n return new AggregateExpr('count', expr);\n }\n\n static sum(expr: AnyExpression): AggregateExpr {\n return new AggregateExpr('sum', expr);\n }\n\n static avg(expr: AnyExpression): AggregateExpr {\n return new AggregateExpr('avg', expr);\n }\n\n static min(expr: AnyExpression): AggregateExpr {\n return new AggregateExpr('min', expr);\n }\n\n static max(expr: AnyExpression): AggregateExpr {\n return new AggregateExpr('max', expr);\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.aggregate(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return this.expr === undefined ? this : new AggregateExpr(this.fn, this.expr.rewrite(rewriter));\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return this.expr ? this.expr.fold(folder) : folder.empty;\n }\n}\n\nexport class JsonObjectExpr extends Expression {\n readonly kind = 'json-object' as const;\n readonly entries: ReadonlyArray<JsonObjectEntry>;\n\n constructor(entries: ReadonlyArray<JsonObjectEntry>) {\n super();\n this.entries = frozenArrayCopy(entries.map((entry) => Object.freeze({ ...entry })));\n this.freeze();\n }\n\n static entry(key: string, value: ProjectionExpr): JsonObjectEntry {\n return {\n key,\n value,\n };\n }\n\n static fromEntries(entries: ReadonlyArray<JsonObjectEntry>): JsonObjectExpr {\n return new JsonObjectExpr(entries);\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.jsonObject(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return new JsonObjectExpr(\n this.entries.map((entry) => ({\n key: entry.key,\n value:\n entry.value.kind === 'literal'\n ? rewriter.literal\n ? rewriter.literal(entry.value)\n : entry.value\n : entry.value.rewrite(rewriter),\n })),\n );\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return combineAll(\n folder,\n this.entries.map(\n (entry) => () =>\n entry.value.kind === 'literal'\n ? folder.literal\n ? folder.literal(entry.value)\n : folder.empty\n : entry.value.fold(folder),\n ),\n );\n }\n}\n\nexport class OrderByItem extends AstNode {\n readonly kind = 'order-by-item' as const;\n readonly expr: AnyExpression;\n readonly dir: Direction;\n\n constructor(expr: AnyExpression, dir: Direction) {\n super();\n this.expr = expr;\n this.dir = dir;\n this.freeze();\n }\n\n static asc(expr: AnyExpression): OrderByItem {\n return new OrderByItem(expr, 'asc');\n }\n\n static desc(expr: AnyExpression): OrderByItem {\n return new OrderByItem(expr, 'desc');\n }\n\n rewrite(rewriter: ExpressionRewriter): OrderByItem {\n return new OrderByItem(this.expr.rewrite(rewriter), this.dir);\n }\n}\n\nexport class JsonArrayAggExpr extends Expression {\n readonly kind = 'json-array-agg' as const;\n readonly expr: AnyExpression;\n readonly onEmpty: 'null' | 'emptyArray';\n readonly orderBy: ReadonlyArray<OrderByItem> | undefined;\n\n constructor(\n expr: AnyExpression,\n onEmpty: 'null' | 'emptyArray' = 'null',\n orderBy?: ReadonlyArray<OrderByItem>,\n ) {\n super();\n this.expr = expr;\n this.onEmpty = onEmpty;\n this.orderBy = orderBy && orderBy.length > 0 ? frozenArrayCopy(orderBy) : undefined;\n this.freeze();\n }\n\n static of(\n expr: AnyExpression,\n onEmpty: 'null' | 'emptyArray' = 'null',\n orderBy?: ReadonlyArray<OrderByItem>,\n ): JsonArrayAggExpr {\n return new JsonArrayAggExpr(expr, onEmpty, orderBy);\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.jsonArrayAgg(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return new JsonArrayAggExpr(\n this.expr.rewrite(rewriter),\n this.onEmpty,\n this.orderBy?.map((orderItem) => orderItem.rewrite(rewriter)),\n );\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return combineAll(folder, [\n () => this.expr.fold(folder),\n ...(this.orderBy ?? []).map((orderItem) => () => orderItem.expr.fold(folder)),\n ]);\n }\n}\n\nexport class ListExpression extends Expression {\n readonly kind = 'list' as const;\n readonly values: ReadonlyArray<AnyExpression>;\n\n constructor(values: ReadonlyArray<AnyExpression>) {\n super();\n this.values = frozenArrayCopy(values);\n this.freeze();\n }\n\n static of(values: ReadonlyArray<AnyExpression>): ListExpression {\n return new ListExpression(values);\n }\n\n static fromValues(values: ReadonlyArray<unknown>): ListExpression {\n return new ListExpression(values.map((value) => new LiteralExpr(value)));\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.list(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n if (rewriter.list) {\n return rewriter.list(this);\n }\n\n return new ListExpression(this.values.map((value) => value.rewrite(rewriter)));\n }\n\n fold<T>(folder: ExpressionFolder<T>): T {\n if (folder.list) {\n return folder.list(this);\n }\n return combineAll(\n folder,\n this.values.map((value) => () => value.fold(folder)),\n );\n }\n}\n\nexport class BinaryExpr extends Expression {\n readonly kind = 'binary' as const;\n readonly op: BinaryOp;\n readonly left: AnyExpression;\n readonly right: AnyExpression;\n\n constructor(op: BinaryOp, left: AnyExpression, right: AnyExpression) {\n super();\n this.op = op;\n this.left = left;\n this.right = right;\n this.freeze();\n }\n\n static eq(left: AnyExpression, right: AnyExpression): BinaryExpr {\n return new BinaryExpr('eq', left, right);\n }\n\n static neq(left: AnyExpression, right: AnyExpression): BinaryExpr {\n return new BinaryExpr('neq', left, right);\n }\n\n static gt(left: AnyExpression, right: AnyExpression): BinaryExpr {\n return new BinaryExpr('gt', left, right);\n }\n\n static lt(left: AnyExpression, right: AnyExpression): BinaryExpr {\n return new BinaryExpr('lt', left, right);\n }\n\n static gte(left: AnyExpression, right: AnyExpression): BinaryExpr {\n return new BinaryExpr('gte', left, right);\n }\n\n static lte(left: AnyExpression, right: AnyExpression): BinaryExpr {\n return new BinaryExpr('lte', left, right);\n }\n\n static like(left: AnyExpression, right: AnyExpression): BinaryExpr {\n return new BinaryExpr('like', left, right);\n }\n\n static in(left: AnyExpression, right: AnyExpression): BinaryExpr {\n return new BinaryExpr('in', left, right);\n }\n\n static notIn(left: AnyExpression, right: AnyExpression): BinaryExpr {\n return new BinaryExpr('notIn', left, right);\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.binary(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return new BinaryExpr(\n this.op,\n rewriteComparable(this.left, rewriter),\n rewriteComparable(this.right, rewriter),\n );\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return combineAll(folder, [\n () => foldComparable(this.left, folder),\n () => foldComparable(this.right, folder),\n ]);\n }\n}\n\nexport class AndExpr extends Expression {\n readonly kind = 'and' as const;\n readonly exprs: ReadonlyArray<AnyExpression>;\n\n constructor(exprs: ReadonlyArray<AnyExpression>) {\n super();\n this.exprs = frozenArrayCopy(exprs);\n this.freeze();\n }\n\n static of(exprs: ReadonlyArray<AnyExpression>): AndExpr {\n return new AndExpr(exprs);\n }\n\n static true(): AndExpr {\n return new AndExpr([]);\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.and(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return new AndExpr(this.exprs.map((expr) => expr.rewrite(rewriter)));\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return combineAll(\n folder,\n this.exprs.map((expr) => () => expr.fold(folder)),\n );\n }\n}\n\nexport class OrExpr extends Expression {\n readonly kind = 'or' as const;\n readonly exprs: ReadonlyArray<AnyExpression>;\n\n constructor(exprs: ReadonlyArray<AnyExpression>) {\n super();\n this.exprs = frozenArrayCopy(exprs);\n this.freeze();\n }\n\n static of(exprs: ReadonlyArray<AnyExpression>): OrExpr {\n return new OrExpr(exprs);\n }\n\n static false(): OrExpr {\n return new OrExpr([]);\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.or(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return new OrExpr(this.exprs.map((expr) => expr.rewrite(rewriter)));\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return combineAll(\n folder,\n this.exprs.map((expr) => () => expr.fold(folder)),\n );\n }\n}\n\nexport class ExistsExpr extends Expression {\n readonly kind = 'exists' as const;\n readonly notExists: boolean;\n readonly subquery: SelectAst;\n\n constructor(subquery: SelectAst, notExists = false) {\n super();\n this.notExists = notExists;\n this.subquery = subquery;\n this.freeze();\n }\n\n static exists(subquery: SelectAst): ExistsExpr {\n return new ExistsExpr(subquery, false);\n }\n\n static notExists(subquery: SelectAst): ExistsExpr {\n return new ExistsExpr(subquery, true);\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.exists(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return new ExistsExpr(this.subquery.rewrite(rewriter), this.notExists);\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return folder.select ? folder.select(this.subquery) : folder.empty;\n }\n}\n\nexport class NullCheckExpr extends Expression {\n readonly kind = 'null-check' as const;\n readonly expr: AnyExpression;\n readonly isNull: boolean;\n\n constructor(expr: AnyExpression, isNull: boolean) {\n super();\n this.expr = expr;\n this.isNull = isNull;\n this.freeze();\n }\n\n static isNull(expr: AnyExpression): NullCheckExpr {\n return new NullCheckExpr(expr, true);\n }\n\n static isNotNull(expr: AnyExpression): NullCheckExpr {\n return new NullCheckExpr(expr, false);\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.nullCheck(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return new NullCheckExpr(this.expr.rewrite(rewriter), this.isNull);\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return this.expr.fold(folder);\n }\n}\n\nexport class NotExpr extends Expression {\n readonly kind = 'not' as const;\n readonly expr: AnyExpression;\n\n constructor(expr: AnyExpression) {\n super();\n this.expr = expr;\n this.freeze();\n }\n\n toWhereExpr(): AnyExpression {\n return this;\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.not(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return new NotExpr(this.expr.rewrite(rewriter));\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return this.expr.fold(folder);\n }\n}\n\nexport class EqColJoinOn extends AstNode {\n readonly kind = 'eq-col-join-on' as const;\n readonly left: ColumnRef;\n readonly right: ColumnRef;\n\n constructor(left: ColumnRef, right: ColumnRef) {\n super();\n this.left = left;\n this.right = right;\n this.freeze();\n }\n\n static of(left: ColumnRef, right: ColumnRef): EqColJoinOn {\n return new EqColJoinOn(left, right);\n }\n\n rewrite(rewriter: AstRewriter): EqColJoinOn | AnyExpression {\n return rewriter.eqColJoinOn ? rewriter.eqColJoinOn(this) : this;\n }\n}\n\nexport class JoinAst extends AstNode {\n readonly kind = 'join' as const;\n readonly joinType: 'inner' | 'left' | 'right' | 'full';\n readonly source: AnyFromSource;\n readonly lateral: boolean;\n readonly on: JoinOnExpr;\n\n constructor(\n joinType: 'inner' | 'left' | 'right' | 'full',\n source: AnyFromSource,\n on: JoinOnExpr,\n lateral = false,\n ) {\n super();\n this.joinType = joinType;\n this.source = source;\n this.lateral = lateral;\n this.on = on;\n this.freeze();\n }\n\n static inner(source: AnyFromSource, on: JoinOnExpr, lateral = false): JoinAst {\n return new JoinAst('inner', source, on, lateral);\n }\n\n static left(source: AnyFromSource, on: JoinOnExpr, lateral = false): JoinAst {\n return new JoinAst('left', source, on, lateral);\n }\n\n static right(source: AnyFromSource, on: JoinOnExpr, lateral = false): JoinAst {\n return new JoinAst('right', source, on, lateral);\n }\n\n static full(source: AnyFromSource, on: JoinOnExpr, lateral = false): JoinAst {\n return new JoinAst('full', source, on, lateral);\n }\n\n rewrite(rewriter: AstRewriter): JoinAst {\n return new JoinAst(\n this.joinType,\n this.source.rewrite(rewriter),\n this.on.kind === 'eq-col-join-on' ? this.on.rewrite(rewriter) : this.on.rewrite(rewriter),\n this.lateral,\n );\n }\n}\n\nexport class ProjectionItem extends AstNode {\n readonly kind = 'projection-item' as const;\n readonly alias: string;\n readonly expr: ProjectionExpr;\n readonly codecId: string | undefined;\n\n constructor(alias: string, expr: ProjectionExpr, codecId?: string) {\n super();\n this.alias = alias;\n this.expr = expr;\n this.codecId = codecId;\n this.freeze();\n }\n\n static of(alias: string, expr: ProjectionExpr, codecId?: string): ProjectionItem {\n return new ProjectionItem(alias, expr, codecId);\n }\n\n withCodecId(codecId: string | undefined): ProjectionItem {\n return new ProjectionItem(this.alias, this.expr, codecId);\n }\n}\n\nexport interface SelectAstOptions {\n readonly from: AnyFromSource;\n readonly joins: ReadonlyArray<JoinAst> | undefined;\n readonly projection: ReadonlyArray<ProjectionItem>;\n readonly where: AnyExpression | undefined;\n readonly orderBy: ReadonlyArray<OrderByItem> | undefined;\n readonly distinct: true | undefined;\n readonly distinctOn: ReadonlyArray<AnyExpression> | undefined;\n readonly groupBy: ReadonlyArray<AnyExpression> | undefined;\n readonly having: AnyExpression | undefined;\n readonly limit: number | undefined;\n readonly offset: number | undefined;\n readonly selectAllIntent: { readonly table?: string } | undefined;\n}\n\nexport class SelectAst extends QueryAst {\n readonly kind = 'select' as const;\n readonly from: AnyFromSource;\n readonly joins: ReadonlyArray<JoinAst> | undefined;\n readonly projection: ReadonlyArray<ProjectionItem>;\n readonly where: AnyExpression | undefined;\n readonly orderBy: ReadonlyArray<OrderByItem> | undefined;\n readonly distinct: true | undefined;\n readonly distinctOn: ReadonlyArray<AnyExpression> | undefined;\n readonly groupBy: ReadonlyArray<AnyExpression> | undefined;\n readonly having: AnyExpression | undefined;\n readonly limit: number | undefined;\n readonly offset: number | undefined;\n readonly selectAllIntent: { readonly table?: string } | undefined;\n\n constructor(options: SelectAstOptions) {\n super();\n this.from = options.from;\n this.joins =\n options.joins && options.joins.length > 0 ? frozenArrayCopy(options.joins) : undefined;\n this.projection = frozenArrayCopy(options.projection);\n this.where = options.where;\n this.orderBy =\n options.orderBy && options.orderBy.length > 0 ? frozenArrayCopy(options.orderBy) : undefined;\n this.distinct = options.distinct;\n this.distinctOn =\n options.distinctOn && options.distinctOn.length > 0\n ? frozenArrayCopy(options.distinctOn)\n : undefined;\n this.groupBy =\n options.groupBy && options.groupBy.length > 0 ? frozenArrayCopy(options.groupBy) : undefined;\n this.having = options.having;\n this.limit = options.limit;\n this.offset = options.offset;\n this.selectAllIntent = frozenOptionalRecordCopy(options.selectAllIntent);\n this.freeze();\n }\n\n static from(from: AnyFromSource): SelectAst {\n return new SelectAst({\n from,\n joins: undefined,\n projection: [],\n where: undefined,\n orderBy: undefined,\n distinct: undefined,\n distinctOn: undefined,\n groupBy: undefined,\n having: undefined,\n limit: undefined,\n offset: undefined,\n selectAllIntent: undefined,\n });\n }\n\n withFrom(from: AnyFromSource): SelectAst {\n return new SelectAst({ ...this, from });\n }\n\n withJoins(joins: ReadonlyArray<JoinAst>): SelectAst {\n return new SelectAst({\n ...this,\n joins: joins.length > 0 ? joins : undefined,\n });\n }\n\n withProjection(projection: ReadonlyArray<ProjectionItem>): SelectAst {\n return new SelectAst({ ...this, projection });\n }\n\n addProjection(alias: string, expr: ProjectionExpr): SelectAst {\n return new SelectAst({\n ...this,\n projection: [...this.projection, new ProjectionItem(alias, expr)],\n });\n }\n\n withWhere(where: AnyExpression | undefined): SelectAst {\n return new SelectAst({ ...this, where });\n }\n\n withOrderBy(orderBy: ReadonlyArray<OrderByItem>): SelectAst {\n return new SelectAst({\n ...this,\n orderBy: orderBy.length > 0 ? orderBy : undefined,\n });\n }\n\n withDistinct(enabled = true): SelectAst {\n return new SelectAst({\n ...this,\n distinct: enabled ? true : undefined,\n });\n }\n\n withDistinctOn(distinctOn: ReadonlyArray<AnyExpression>): SelectAst {\n return new SelectAst({\n ...this,\n distinctOn: distinctOn.length > 0 ? distinctOn : undefined,\n });\n }\n\n withGroupBy(groupBy: ReadonlyArray<AnyExpression>): SelectAst {\n return new SelectAst({\n ...this,\n groupBy: groupBy.length > 0 ? groupBy : undefined,\n });\n }\n\n withHaving(having: AnyExpression | undefined): SelectAst {\n return new SelectAst({ ...this, having });\n }\n\n withLimit(limit: number | undefined): SelectAst {\n return new SelectAst({ ...this, limit });\n }\n\n withOffset(offset: number | undefined): SelectAst {\n return new SelectAst({ ...this, offset });\n }\n\n withSelectAllIntent(selectAllIntent: { readonly table?: string } | undefined): SelectAst {\n return new SelectAst({ ...this, selectAllIntent });\n }\n\n rewrite(rewriter: AstRewriter): SelectAst {\n const rewritten = new SelectAst({\n from: this.from.rewrite(rewriter),\n joins: this.joins?.map((join) => join.rewrite(rewriter)),\n projection: this.projection.map(\n (projection) =>\n new ProjectionItem(\n projection.alias,\n projection.expr.kind === 'literal'\n ? rewriter.literal\n ? rewriter.literal(projection.expr)\n : projection.expr\n : projection.expr.rewrite(rewriter),\n projection.codecId,\n ),\n ),\n where: this.where?.rewrite(rewriter),\n orderBy: this.orderBy?.map((orderItem) => orderItem.rewrite(rewriter)),\n distinct: this.distinct,\n distinctOn: this.distinctOn?.map((expr) => expr.rewrite(rewriter)),\n groupBy: this.groupBy?.map((expr) => expr.rewrite(rewriter)),\n having: this.having?.rewrite(rewriter),\n limit: this.limit,\n offset: this.offset,\n selectAllIntent: this.selectAllIntent,\n });\n\n return rewriter.select ? rewriter.select(rewritten) : rewritten;\n }\n\n collectColumnRefs(): ColumnRef[] {\n const refs: ColumnRef[] = [];\n const pushRefs = (columns: ReadonlyArray<ColumnRef>) => {\n refs.push(...columns);\n };\n\n if (this.from.kind === 'derived-table-source') {\n pushRefs(this.from.query.collectColumnRefs());\n }\n\n for (const projection of this.projection) {\n if (!(projection.expr.kind === 'literal')) {\n pushRefs(projection.expr.collectColumnRefs());\n }\n }\n\n if (this.where) {\n pushRefs(this.where.collectColumnRefs());\n }\n if (this.having) {\n pushRefs(this.having.collectColumnRefs());\n }\n for (const orderItem of this.orderBy ?? []) {\n pushRefs(orderItem.expr.collectColumnRefs());\n }\n for (const expr of this.distinctOn ?? []) {\n pushRefs(expr.collectColumnRefs());\n }\n for (const expr of this.groupBy ?? []) {\n pushRefs(expr.collectColumnRefs());\n }\n for (const join of this.joins ?? []) {\n if (join.source.kind === 'derived-table-source') {\n pushRefs(join.source.query.collectColumnRefs());\n }\n if (join.on.kind === 'eq-col-join-on') {\n refs.push(join.on.left, join.on.right);\n } else {\n pushRefs(join.on.collectColumnRefs());\n }\n }\n\n return refs;\n }\n\n collectParamRefs(): ParamRef[] {\n const refs: ParamRef[] = [];\n const pushRefs = (params: ReadonlyArray<ParamRef>) => {\n refs.push(...params);\n };\n\n if (this.from.kind === 'derived-table-source') {\n pushRefs(this.from.query.collectParamRefs());\n }\n\n for (const projection of this.projection) {\n if (!(projection.expr.kind === 'literal')) {\n pushRefs(projection.expr.collectParamRefs());\n }\n }\n\n if (this.where) {\n pushRefs(this.where.collectParamRefs());\n }\n if (this.having) {\n pushRefs(this.having.collectParamRefs());\n }\n for (const orderItem of this.orderBy ?? []) {\n pushRefs(orderItem.expr.collectParamRefs());\n }\n for (const expr of this.distinctOn ?? []) {\n pushRefs(expr.collectParamRefs());\n }\n for (const expr of this.groupBy ?? []) {\n pushRefs(expr.collectParamRefs());\n }\n for (const join of this.joins ?? []) {\n if (join.source.kind === 'derived-table-source') {\n pushRefs(join.source.query.collectParamRefs());\n }\n if (!(join.on.kind === 'eq-col-join-on')) {\n pushRefs(join.on.collectParamRefs());\n }\n }\n\n return refs;\n }\n\n override toQueryAst(): AnyQueryAst {\n return this;\n }\n}\n\nabstract class InsertOnConflictAction extends AstNode {\n abstract toInsertOnConflictAction(): AnyInsertOnConflictAction;\n}\n\nexport class DoNothingConflictAction extends InsertOnConflictAction {\n readonly kind = 'do-nothing' as const;\n\n constructor() {\n super();\n this.freeze();\n }\n\n override toInsertOnConflictAction(): AnyInsertOnConflictAction {\n return this;\n }\n}\n\nexport class DoUpdateSetConflictAction extends InsertOnConflictAction {\n readonly kind = 'do-update-set' as const;\n readonly set: Readonly<Record<string, ColumnRef | ParamRef>>;\n\n constructor(set: Readonly<Record<string, ColumnRef | ParamRef>>) {\n super();\n this.set = frozenRecordCopy(set);\n this.freeze();\n }\n\n override toInsertOnConflictAction(): AnyInsertOnConflictAction {\n return this;\n }\n}\n\nexport class InsertOnConflict extends AstNode {\n readonly kind = 'insert-on-conflict' as const;\n readonly columns: ReadonlyArray<ColumnRef>;\n readonly action: AnyInsertOnConflictAction;\n\n constructor(columns: ReadonlyArray<ColumnRef>, action: AnyInsertOnConflictAction) {\n super();\n this.columns = frozenArrayCopy(columns);\n this.action = action;\n this.freeze();\n }\n\n static on(columns: ReadonlyArray<ColumnRef>): InsertOnConflict {\n return new InsertOnConflict(columns, new DoNothingConflictAction());\n }\n\n doNothing(): InsertOnConflict {\n return new InsertOnConflict(this.columns, new DoNothingConflictAction());\n }\n\n doUpdateSet(set: Readonly<Record<string, ColumnRef | ParamRef>>): InsertOnConflict {\n return new InsertOnConflict(this.columns, new DoUpdateSetConflictAction(set));\n }\n}\n\nexport class InsertAst extends QueryAst {\n readonly kind = 'insert' as const;\n readonly table: TableSource;\n readonly rows: ReadonlyArray<Readonly<Record<string, InsertValue>>>;\n readonly onConflict: InsertOnConflict | undefined;\n readonly returning: ReadonlyArray<ProjectionItem> | undefined;\n\n constructor(\n table: TableSource,\n rows: ReadonlyArray<Record<string, InsertValue>> = [{}],\n onConflict?: InsertOnConflict,\n returning?: ReadonlyArray<ProjectionItem>,\n ) {\n super();\n this.table = table;\n this.rows = freezeRows(rows);\n this.onConflict = onConflict;\n this.returning = returning && returning.length > 0 ? frozenArrayCopy(returning) : undefined;\n this.freeze();\n }\n\n static into(table: TableSource): InsertAst {\n return new InsertAst(table);\n }\n\n withValues(values: Record<string, InsertValue>): InsertAst {\n return new InsertAst(this.table, [{ ...values }], this.onConflict, this.returning);\n }\n\n withRows(rows: ReadonlyArray<Record<string, InsertValue>>): InsertAst {\n return new InsertAst(\n this.table,\n rows.map((row) => ({ ...row })),\n this.onConflict,\n this.returning,\n );\n }\n\n withReturning(returning: ReadonlyArray<ProjectionItem> | undefined): InsertAst {\n return new InsertAst(\n this.table,\n this.rows.map((row) => ({ ...row })),\n this.onConflict,\n returning,\n );\n }\n\n withOnConflict(onConflict: InsertOnConflict | undefined): InsertAst {\n return new InsertAst(\n this.table,\n this.rows.map((row) => ({ ...row })),\n onConflict,\n this.returning,\n );\n }\n\n rewrite(rewriter: AstRewriter): InsertAst {\n return new InsertAst(\n rewriteTableSource(this.table, rewriter),\n this.rows.map((row) => rewriteInsertRow(row, rewriter)),\n this.onConflict ? rewriteOnConflict(this.onConflict, rewriter) : undefined,\n this.returning?.map((item) => rewriteProjectionItem(item, rewriter)),\n );\n }\n\n override collectParamRefs(): ParamRef[] {\n const refs: ParamRef[] = [];\n for (const row of this.rows) {\n for (const value of Object.values(row)) {\n if (value.kind === 'param-ref') {\n refs.push(value);\n }\n }\n }\n if (this.onConflict?.action.kind === 'do-update-set') {\n for (const value of Object.values(this.onConflict.action.set)) {\n if (value.kind === 'param-ref') {\n refs.push(value);\n }\n }\n }\n for (const item of this.returning ?? []) {\n if (item.expr.kind !== 'literal') {\n refs.push(...item.expr.collectParamRefs());\n }\n }\n return refs;\n }\n\n override toQueryAst(): AnyQueryAst {\n return this;\n }\n}\n\nexport class UpdateAst extends QueryAst {\n readonly kind = 'update' as const;\n readonly table: TableSource;\n readonly set: Readonly<Record<string, ColumnRef | ParamRef>>;\n readonly where: AnyExpression | undefined;\n readonly returning: ReadonlyArray<ProjectionItem> | undefined;\n\n constructor(\n table: TableSource,\n set: Readonly<Record<string, ColumnRef | ParamRef>> = {},\n where?: AnyExpression,\n returning?: ReadonlyArray<ProjectionItem>,\n ) {\n super();\n this.table = table;\n this.set = frozenRecordCopy(set);\n this.where = where;\n this.returning = returning && returning.length > 0 ? frozenArrayCopy(returning) : undefined;\n this.freeze();\n }\n\n static table(table: TableSource): UpdateAst {\n return new UpdateAst(table);\n }\n\n withSet(set: Readonly<Record<string, ColumnRef | ParamRef>>): UpdateAst {\n return new UpdateAst(this.table, set, this.where, this.returning);\n }\n\n withWhere(where: AnyExpression | undefined): UpdateAst {\n return new UpdateAst(this.table, this.set, where, this.returning);\n }\n\n withReturning(returning: ReadonlyArray<ProjectionItem> | undefined): UpdateAst {\n return new UpdateAst(this.table, this.set, this.where, returning);\n }\n\n rewrite(rewriter: AstRewriter): UpdateAst {\n return new UpdateAst(\n rewriteTableSource(this.table, rewriter),\n rewriteUpdateSet(this.set, rewriter),\n this.where?.rewrite(rewriter),\n this.returning?.map((item) => rewriteProjectionItem(item, rewriter)),\n );\n }\n\n override collectParamRefs(): ParamRef[] {\n const refs: ParamRef[] = [];\n for (const value of Object.values(this.set)) {\n if (value.kind === 'param-ref') {\n refs.push(value);\n }\n }\n if (this.where) {\n refs.push(...this.where.collectParamRefs());\n }\n for (const item of this.returning ?? []) {\n if (item.expr.kind !== 'literal') {\n refs.push(...item.expr.collectParamRefs());\n }\n }\n return refs;\n }\n\n override toQueryAst(): AnyQueryAst {\n return this;\n }\n}\n\nexport class DeleteAst extends QueryAst {\n readonly kind = 'delete' as const;\n readonly table: TableSource;\n readonly where: AnyExpression | undefined;\n readonly returning: ReadonlyArray<ProjectionItem> | undefined;\n\n constructor(\n table: TableSource,\n where?: AnyExpression,\n returning?: ReadonlyArray<ProjectionItem>,\n ) {\n super();\n this.table = table;\n this.where = where;\n this.returning = returning && returning.length > 0 ? frozenArrayCopy(returning) : undefined;\n this.freeze();\n }\n\n static from(table: TableSource): DeleteAst {\n return new DeleteAst(table);\n }\n\n withWhere(where: AnyExpression | undefined): DeleteAst {\n return new DeleteAst(this.table, where, this.returning);\n }\n\n withReturning(returning: ReadonlyArray<ProjectionItem> | undefined): DeleteAst {\n return new DeleteAst(this.table, this.where, returning);\n }\n\n rewrite(rewriter: AstRewriter): DeleteAst {\n return new DeleteAst(\n rewriteTableSource(this.table, rewriter),\n this.where?.rewrite(rewriter),\n this.returning?.map((item) => rewriteProjectionItem(item, rewriter)),\n );\n }\n\n override collectParamRefs(): ParamRef[] {\n const refs: ParamRef[] = [];\n if (this.where) {\n refs.push(...this.where.collectParamRefs());\n }\n for (const item of this.returning ?? []) {\n if (item.expr.kind !== 'literal') {\n refs.push(...item.expr.collectParamRefs());\n }\n }\n return refs;\n }\n\n override toQueryAst(): AnyQueryAst {\n return this;\n }\n}\n\nexport type AnyQueryAst = SelectAst | InsertAst | UpdateAst | DeleteAst;\nexport type AnyFromSource = TableSource | DerivedTableSource;\nexport type AnyExpression =\n | ColumnRef\n | IdentifierRef\n | ParamRef\n | LiteralExpr\n | SubqueryExpr\n | OperationExpr\n | AggregateExpr\n | JsonObjectExpr\n | JsonArrayAggExpr\n | ListExpression\n | BinaryExpr\n | AndExpr\n | OrExpr\n | ExistsExpr\n | NullCheckExpr\n | NotExpr;\nexport type AnyInsertOnConflictAction = DoNothingConflictAction | DoUpdateSetConflictAction;\nexport type AnyInsertValue = ColumnRef | ParamRef | DefaultValueExpr;\nexport type AnyOperationArg = AnyExpression | ParamRef | LiteralExpr;\n\nexport const queryAstKinds: ReadonlySet<string> = new Set<AnyQueryAst['kind']>([\n 'select',\n 'insert',\n 'update',\n 'delete',\n]);\nexport const whereExprKinds: ReadonlySet<string> = new Set<AnyExpression['kind']>([\n 'binary',\n 'and',\n 'or',\n 'exists',\n 'null-check',\n 'not',\n]);\n\nexport function isQueryAst(value: unknown): value is AnyQueryAst {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'kind' in value &&\n queryAstKinds.has((value as { kind: string }).kind)\n );\n}\n\nexport function isWhereExpr(value: unknown): value is AnyExpression {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'kind' in value &&\n whereExprKinds.has((value as { kind: string }).kind)\n );\n}\n\nexport interface ToWhereExpr {\n toWhereExpr(): AnyExpression;\n}\n\nexport interface LoweredStatement {\n readonly sql: string;\n readonly params: readonly unknown[];\n readonly annotations?: Record<string, unknown>;\n}\n"],"mappings":"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"}
|