@entity-access/entity-access 1.0.417 → 1.0.419
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/drivers/base/BaseDriver.d.ts.map +1 -1
- package/dist/drivers/base/BaseDriver.js.map +1 -1
- package/dist/entity-query/EntityType.d.ts +1 -1
- package/dist/entity-query/EntityType.d.ts.map +1 -1
- package/dist/entity-query/EntityType.js +2 -2
- package/dist/entity-query/EntityType.js.map +1 -1
- package/dist/model/EntityQuery.d.ts +3 -1
- package/dist/model/EntityQuery.d.ts.map +1 -1
- package/dist/model/EntityQuery.js +25 -7
- package/dist/model/EntityQuery.js.map +1 -1
- package/dist/model/IFilterWithParameter.d.ts +1 -0
- package/dist/model/IFilterWithParameter.d.ts.map +1 -1
- package/dist/query/ast/DebugStringVisitor.d.ts +2 -2
- package/dist/query/ast/DebugStringVisitor.d.ts.map +1 -1
- package/dist/query/ast/DebugStringVisitor.js +3 -2
- package/dist/query/ast/DebugStringVisitor.js.map +1 -1
- package/dist/query/ast/ExpressionToSql.d.ts +2 -2
- package/dist/query/ast/ExpressionToSql.d.ts.map +1 -1
- package/dist/query/ast/ExpressionToSql.js +8 -2
- package/dist/query/ast/ExpressionToSql.js.map +1 -1
- package/dist/query/ast/Expressions.d.ts +7 -4
- package/dist/query/ast/Expressions.d.ts.map +1 -1
- package/dist/query/ast/Expressions.js +16 -4
- package/dist/query/ast/Expressions.js.map +1 -1
- package/dist/query/ast/Visitor.d.ts +2 -2
- package/dist/query/ast/Visitor.d.ts.map +1 -1
- package/dist/query/ast/Visitor.js +3 -3
- package/dist/query/ast/Visitor.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/drivers/base/BaseDriver.ts +1 -1
- package/src/entity-query/EntityType.ts +2 -2
- package/src/model/EntityQuery.ts +29 -6
- package/src/model/IFilterWithParameter.ts +1 -0
- package/src/query/ast/DebugStringVisitor.ts +4 -3
- package/src/query/ast/ExpressionToSql.ts +9 -3
- package/src/query/ast/Expressions.ts +23 -6
- package/src/query/ast/Visitor.ts +4 -4
|
@@ -4,7 +4,7 @@ import EntityType, { IEntityProperty } from "../../entity-query/EntityType.js";
|
|
|
4
4
|
import EntityQuery from "../../model/EntityQuery.js";
|
|
5
5
|
import { FilteredExpression, filteredSymbol } from "../../model/events/FilteredExpression.js";
|
|
6
6
|
import { NotSupportedError } from "../parser/NotSupportedError.js";
|
|
7
|
-
import { ArrowFunctionExpression, BigIntLiteral, BinaryExpression, BooleanLiteral, CallExpression, CoalesceExpression, ConditionalExpression, Constant, DeleteStatement, ExistsExpression, Expression, ExpressionAs, ExpressionType, Identifier, InsertStatement, JoinExpression, MemberExpression, UpsertStatement, NewObjectExpression, NotExits, NullExpression, NumberLiteral, OrderByExpression, ParameterExpression, ReturnUpdated, SelectStatement, StringLiteral, TableLiteral, TemplateLiteral,
|
|
7
|
+
import { ArrowFunctionExpression, BigIntLiteral, BinaryExpression, BooleanLiteral, CallExpression, CoalesceExpression, ConditionalExpression, Constant, DeleteStatement, ExistsExpression, Expression, ExpressionAs, ExpressionType, Identifier, InsertStatement, JoinExpression, MemberExpression, UpsertStatement, NewObjectExpression, NotExits, NullExpression, NumberLiteral, OrderByExpression, ParameterExpression, ReturnUpdated, SelectStatement, StringLiteral, TableLiteral, TemplateLiteral, UnionStatement, UpdateStatement, ValuesStatement, NotExpression, ArrayExpression, BracketExpression, NegateExpression } from "./Expressions.js";
|
|
8
8
|
import { ITextQuery, QueryParameter, joinMap, prepare, prepareJoin } from "./IStringTransformer.js";
|
|
9
9
|
import ParameterScope from "./ParameterScope.js";
|
|
10
10
|
import Visitor from "./Visitor.js";
|
|
@@ -42,6 +42,11 @@ export default class ExpressionToSql extends Visitor<ITextQuery> {
|
|
|
42
42
|
super();
|
|
43
43
|
// this.targets.set(root, { parameter: root });
|
|
44
44
|
// this.targets.set(target, { parameter: target, model: this.source?.type });
|
|
45
|
+
if (source.scope) {
|
|
46
|
+
for (const p of source.scope) {
|
|
47
|
+
this.scope.create({ parameter: p, name: p.name, model: p.model});
|
|
48
|
+
}
|
|
49
|
+
}
|
|
45
50
|
if (this.root) {
|
|
46
51
|
this.scope.create({ parameter: root, name: root.name ?? "x", isRuntimeParam: true });
|
|
47
52
|
}
|
|
@@ -764,12 +769,13 @@ export default class ExpressionToSql extends Visitor<ITextQuery> {
|
|
|
764
769
|
return prepare `EXISTS (${this.visit(e.target)})`;
|
|
765
770
|
}
|
|
766
771
|
|
|
767
|
-
|
|
772
|
+
visitUnionStatement(e: UnionStatement): ITextQuery {
|
|
773
|
+
const sep = e.all ? " UNION ALL " : " UNION ";
|
|
768
774
|
const all: ITextQuery = ["("];
|
|
769
775
|
let first = true;
|
|
770
776
|
for (const iterator of e.queries) {
|
|
771
777
|
if (!first) {
|
|
772
|
-
all.push(
|
|
778
|
+
all.push(sep);
|
|
773
779
|
} else {
|
|
774
780
|
first = false;
|
|
775
781
|
}
|
|
@@ -103,9 +103,17 @@ export abstract class Expression {
|
|
|
103
103
|
return BinaryExpression.create({ left, right, operator: "=", assign: true});
|
|
104
104
|
}
|
|
105
105
|
|
|
106
|
+
static union(...queries: Expression[]) {
|
|
107
|
+
return UnionStatement.create({
|
|
108
|
+
queries,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
|
|
106
113
|
static unionAll(...queries: Expression[]) {
|
|
107
|
-
return
|
|
108
|
-
queries
|
|
114
|
+
return UnionStatement.create({
|
|
115
|
+
queries,
|
|
116
|
+
all: true
|
|
109
117
|
});
|
|
110
118
|
}
|
|
111
119
|
|
|
@@ -232,9 +240,13 @@ export class BracketExpression extends Expression {
|
|
|
232
240
|
target: Expression;
|
|
233
241
|
}
|
|
234
242
|
|
|
243
|
+
let pid = 1;
|
|
244
|
+
const pidSymbol = Symbol("pid");
|
|
245
|
+
|
|
235
246
|
export class ParameterExpression extends Expression {
|
|
236
247
|
readonly type = "ParameterExpression";
|
|
237
|
-
|
|
248
|
+
|
|
249
|
+
name: string;
|
|
238
250
|
/**
|
|
239
251
|
* Default value if any...
|
|
240
252
|
*/
|
|
@@ -247,6 +259,10 @@ export class ParameterExpression extends Expression {
|
|
|
247
259
|
|
|
248
260
|
quotedLiteral: (x: string) => string;
|
|
249
261
|
|
|
262
|
+
get id() {
|
|
263
|
+
return this[pidSymbol] ??= pid++;
|
|
264
|
+
}
|
|
265
|
+
|
|
250
266
|
toString() {
|
|
251
267
|
return this.quotedLiteral?.(this.name) ?? this.name;
|
|
252
268
|
}
|
|
@@ -450,8 +466,9 @@ export class UpsertStatement extends Expression {
|
|
|
450
466
|
returnUpdated: ReturnUpdated;
|
|
451
467
|
}
|
|
452
468
|
|
|
453
|
-
export class
|
|
454
|
-
readonly type = "
|
|
469
|
+
export class UnionStatement extends Expression {
|
|
470
|
+
readonly type = "UnionStatement";
|
|
471
|
+
all = false;
|
|
455
472
|
queries: Expression[];
|
|
456
473
|
}
|
|
457
474
|
|
|
@@ -497,7 +514,7 @@ export type ExpressionType =
|
|
|
497
514
|
ParameterExpression |
|
|
498
515
|
ArrayExpression |
|
|
499
516
|
NotExits |
|
|
500
|
-
|
|
517
|
+
UnionStatement |
|
|
501
518
|
NotExpression |
|
|
502
519
|
NegateExpression |
|
|
503
520
|
BracketExpression |
|
package/src/query/ast/Visitor.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { NotSupportedError } from "../parser/NotSupportedError.js";
|
|
2
|
-
import { ArrayExpression, ArrowFunctionExpression, BigIntLiteral, BinaryExpression, BooleanLiteral, CallExpression, CoalesceExpression, ConditionalExpression, Constant, DeleteStatement, ExistsExpression, Expression, ExpressionAs, ExpressionType, Identifier, InsertStatement, JoinExpression, MemberExpression, UpsertStatement, NewObjectExpression, NotExits, NullExpression, NumberLiteral, OrderByExpression, ParameterExpression, ReturnUpdated, SelectStatement, StringLiteral, TableLiteral, TemplateElement, TemplateLiteral,
|
|
2
|
+
import { ArrayExpression, ArrowFunctionExpression, BigIntLiteral, BinaryExpression, BooleanLiteral, CallExpression, CoalesceExpression, ConditionalExpression, Constant, DeleteStatement, ExistsExpression, Expression, ExpressionAs, ExpressionType, Identifier, InsertStatement, JoinExpression, MemberExpression, UpsertStatement, NewObjectExpression, NotExits, NullExpression, NumberLiteral, OrderByExpression, ParameterExpression, ReturnUpdated, SelectStatement, StringLiteral, TableLiteral, TemplateElement, TemplateLiteral, UnionStatement, UpdateStatement, ValuesStatement, NotExpression, BracketExpression, NegateExpression } from "./Expressions.js";
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
export default abstract class Visitor<T = any> {
|
|
@@ -69,8 +69,8 @@ export default abstract class Visitor<T = any> {
|
|
|
69
69
|
return this.visitArrayExpression(e);
|
|
70
70
|
case "NotExists":
|
|
71
71
|
return this.visitNotExists(e);
|
|
72
|
-
case "
|
|
73
|
-
return this.
|
|
72
|
+
case "UnionStatement":
|
|
73
|
+
return this.visitUnionStatement(e);
|
|
74
74
|
case "UpsertStatement":
|
|
75
75
|
return this.visitUpsertStatement(e);
|
|
76
76
|
case "NotExpression":
|
|
@@ -95,7 +95,7 @@ export default abstract class Visitor<T = any> {
|
|
|
95
95
|
visitUpsertStatement(e: UpsertStatement): T {
|
|
96
96
|
throw new Error("Method not implemented.");
|
|
97
97
|
}
|
|
98
|
-
|
|
98
|
+
visitUnionStatement(e: UnionStatement): T {
|
|
99
99
|
throw new NotSupportedError("Union All");
|
|
100
100
|
}
|
|
101
101
|
visitNotExists(e: NotExits): T {
|