@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.
Files changed (38) hide show
  1. package/dist/drivers/base/BaseDriver.d.ts.map +1 -1
  2. package/dist/drivers/base/BaseDriver.js.map +1 -1
  3. package/dist/entity-query/EntityType.d.ts +1 -1
  4. package/dist/entity-query/EntityType.d.ts.map +1 -1
  5. package/dist/entity-query/EntityType.js +2 -2
  6. package/dist/entity-query/EntityType.js.map +1 -1
  7. package/dist/model/EntityQuery.d.ts +3 -1
  8. package/dist/model/EntityQuery.d.ts.map +1 -1
  9. package/dist/model/EntityQuery.js +25 -7
  10. package/dist/model/EntityQuery.js.map +1 -1
  11. package/dist/model/IFilterWithParameter.d.ts +1 -0
  12. package/dist/model/IFilterWithParameter.d.ts.map +1 -1
  13. package/dist/query/ast/DebugStringVisitor.d.ts +2 -2
  14. package/dist/query/ast/DebugStringVisitor.d.ts.map +1 -1
  15. package/dist/query/ast/DebugStringVisitor.js +3 -2
  16. package/dist/query/ast/DebugStringVisitor.js.map +1 -1
  17. package/dist/query/ast/ExpressionToSql.d.ts +2 -2
  18. package/dist/query/ast/ExpressionToSql.d.ts.map +1 -1
  19. package/dist/query/ast/ExpressionToSql.js +8 -2
  20. package/dist/query/ast/ExpressionToSql.js.map +1 -1
  21. package/dist/query/ast/Expressions.d.ts +7 -4
  22. package/dist/query/ast/Expressions.d.ts.map +1 -1
  23. package/dist/query/ast/Expressions.js +16 -4
  24. package/dist/query/ast/Expressions.js.map +1 -1
  25. package/dist/query/ast/Visitor.d.ts +2 -2
  26. package/dist/query/ast/Visitor.d.ts.map +1 -1
  27. package/dist/query/ast/Visitor.js +3 -3
  28. package/dist/query/ast/Visitor.js.map +1 -1
  29. package/dist/tsconfig.tsbuildinfo +1 -1
  30. package/package.json +1 -1
  31. package/src/drivers/base/BaseDriver.ts +1 -1
  32. package/src/entity-query/EntityType.ts +2 -2
  33. package/src/model/EntityQuery.ts +29 -6
  34. package/src/model/IFilterWithParameter.ts +1 -0
  35. package/src/query/ast/DebugStringVisitor.ts +4 -3
  36. package/src/query/ast/ExpressionToSql.ts +9 -3
  37. package/src/query/ast/Expressions.ts +23 -6
  38. 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, UnionAllStatement, UpdateStatement, ValuesStatement, NotExpression, ArrayExpression, BracketExpression, NegateExpression } from "./Expressions.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, 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
- visitUnionAllStatement(e: UnionAllStatement): ITextQuery {
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(" UNION ALL ");
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 UnionAllStatement.create({
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
- name: string;
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 UnionAllStatement extends Expression {
454
- readonly type = "UnionAllStatement";
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
- UnionAllStatement |
517
+ UnionStatement |
501
518
  NotExpression |
502
519
  NegateExpression |
503
520
  BracketExpression |
@@ -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, UnionAllStatement, UpdateStatement, ValuesStatement, NotExpression, BracketExpression, NegateExpression } from "./Expressions.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, 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 "UnionAllStatement":
73
- return this.visitUnionAllStatement(e);
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
- visitUnionAllStatement(e: UnionAllStatement): T {
98
+ visitUnionStatement(e: UnionStatement): T {
99
99
  throw new NotSupportedError("Union All");
100
100
  }
101
101
  visitNotExists(e: NotExits): T {