@entity-access/entity-access 1.0.224 → 1.0.226
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/common/EventSet.js.map +1 -1
- package/dist/common/ImmutableObject.js.map +1 -1
- package/dist/common/Logger.js.map +1 -1
- package/dist/common/ObjectPool.js.map +1 -1
- package/dist/common/cache/TimedCache.js.map +1 -1
- package/dist/common/cloner.js.map +1 -1
- package/dist/common/sleep.js.map +1 -1
- package/dist/common/usingAsync.js.map +1 -1
- package/dist/compiler/ISqlHelpers.js.map +1 -1
- package/dist/compiler/QueryCompiler.js.map +1 -1
- package/dist/compiler/RawQuery.js.map +1 -1
- package/dist/compiler/postgres/PostgreSqlMethodTransformer.js.map +1 -1
- package/dist/compiler/sql-server/SqlServerSqlMethodTransformer.js.map +1 -1
- package/dist/decorators/Column.js.map +1 -1
- package/dist/decorators/Index.js.map +1 -1
- package/dist/decorators/Relate.js.map +1 -1
- package/dist/decorators/SchemaRegistry.js.map +1 -1
- package/dist/decorators/parser/NameParser.js.map +1 -1
- package/dist/di/di.js.map +1 -1
- package/dist/drivers/base/BaseDriver.js.map +1 -1
- package/dist/drivers/postgres/PostgreSqlDriver.js.map +1 -1
- package/dist/drivers/sql-server/ExpressionToSqlServer.d.ts.map +1 -1
- package/dist/drivers/sql-server/ExpressionToSqlServer.js +13 -0
- package/dist/drivers/sql-server/ExpressionToSqlServer.js.map +1 -1
- package/dist/drivers/sql-server/SqlServerDriver.js.map +1 -1
- package/dist/entity-query/EntityType.d.ts +2 -0
- package/dist/entity-query/EntityType.d.ts.map +1 -1
- package/dist/entity-query/EntityType.js.map +1 -1
- package/dist/migrations/Migrations.js.map +1 -1
- package/dist/migrations/postgres/PostgresAutomaticMigrations.js.map +1 -1
- package/dist/migrations/postgres/PostgresMigrations.js.map +1 -1
- package/dist/migrations/sql-server/SqlServerAutomaticMigrations.js.map +1 -1
- package/dist/migrations/sql-server/SqlServerMigrations.js.map +1 -1
- package/dist/model/EntityContext.js.map +1 -1
- package/dist/model/EntityModel.js.map +1 -1
- package/dist/model/EntityQuery.d.ts +1 -0
- package/dist/model/EntityQuery.d.ts.map +1 -1
- package/dist/model/EntityQuery.js +31 -0
- package/dist/model/EntityQuery.js.map +1 -1
- package/dist/model/EntitySource.js.map +1 -1
- package/dist/model/IFilterWithParameter.d.ts +1 -0
- package/dist/model/IFilterWithParameter.d.ts.map +1 -1
- package/dist/model/SourceExpression.js.map +1 -1
- package/dist/model/changes/ChangeEntry.d.ts.map +1 -1
- package/dist/model/changes/ChangeEntry.js +3 -0
- package/dist/model/changes/ChangeEntry.js.map +1 -1
- package/dist/model/changes/ChangeSet.js.map +1 -1
- package/dist/model/events/ContextEvents.js.map +1 -1
- package/dist/model/events/FilteredExpression.js.map +1 -1
- package/dist/model/identity/IdentityService.js.map +1 -1
- package/dist/model/identity/RelationMapper.js.map +1 -1
- package/dist/model/verification/VerificationSession.js.map +1 -1
- package/dist/query/Query.js.map +1 -1
- package/dist/query/ast/DebugStringVisitor.js.map +1 -1
- package/dist/query/ast/ExpressionToSql.d.ts.map +1 -1
- package/dist/query/ast/ExpressionToSql.js +13 -0
- package/dist/query/ast/ExpressionToSql.js.map +1 -1
- package/dist/query/ast/Expressions.d.ts +2 -0
- package/dist/query/ast/Expressions.d.ts.map +1 -1
- package/dist/query/ast/Expressions.js.map +1 -1
- package/dist/query/ast/IStringTransformer.js.map +1 -1
- package/dist/query/ast/ParameterScope.js.map +1 -1
- package/dist/query/ast/ReplaceParameter.js.map +1 -1
- package/dist/query/ast/SqlLiteral.js.map +1 -1
- package/dist/query/ast/Visitor.js.map +1 -1
- package/dist/query/expander/QueryExpander.js.map +1 -1
- package/dist/query/parser/ArrowToExpression.js.map +1 -1
- package/dist/query/parser/BabelVisitor.js.map +1 -1
- package/dist/query/parser/Restructure.js.map +1 -1
- package/dist/query/parser/TransformVisitor.js.map +1 -1
- package/dist/tests/db-tests/tests/filtered-include-items.js.map +1 -1
- package/dist/tests/db-tests/tests/select-inverse-one-to-one.js.map +1 -1
- package/dist/tests/db-tests/tests/select-items-map.js.map +1 -1
- package/dist/tests/db-tests/tests/select-items.js.map +1 -1
- package/dist/tests/db-tests/tests/select-map.js.map +1 -1
- package/dist/tests/db-tests/tests/select-nested.js.map +1 -1
- package/dist/tests/db-tests/tests/update-items.d.ts.map +1 -1
- package/dist/tests/db-tests/tests/update-items.js +6 -0
- package/dist/tests/db-tests/tests/update-items.js.map +1 -1
- package/dist/tests/db-tests/tests/upsert-test.js.map +1 -1
- package/dist/tests/drivers/postgres/connection-test.js.map +1 -1
- package/dist/tests/eternity/external-event-tests.js.map +1 -1
- package/dist/tests/expressions/left-joins/child-joins.d.ts.map +1 -1
- package/dist/tests/expressions/left-joins/child-joins.js +22 -5
- package/dist/tests/expressions/left-joins/child-joins.js.map +1 -1
- package/dist/tests/expressions/trimInternal.d.ts.map +1 -1
- package/dist/tests/expressions/trimInternal.js +8 -6
- package/dist/tests/expressions/trimInternal.js.map +1 -1
- package/dist/tests/model/ShoppingContext.d.ts +1 -0
- package/dist/tests/model/ShoppingContext.d.ts.map +1 -1
- package/dist/tests/model/ShoppingContext.js +4 -0
- package/dist/tests/model/ShoppingContext.js.map +1 -1
- package/dist/tests/pool/pool-test.js.map +1 -1
- package/dist/tests/security/events/OrderEvents.js.map +1 -1
- package/dist/tests/security/events/ProductEvents.js.map +1 -1
- package/dist/tests/security/events/UserEvents.js.map +1 -1
- package/dist/tests/security/tests/place-order.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/DateTime.js.map +1 -1
- package/dist/types/TimeSpan.js.map +1 -1
- package/dist/workflows/Waiter.js.map +1 -1
- package/dist/workflows/Workflow.js.map +1 -1
- package/dist/workflows/WorkflowContext.js.map +1 -1
- package/dist/workflows/WorkflowRegistry.js.map +1 -1
- package/dist/workflows/WorkflowStorage.js.map +1 -1
- package/package.json +2 -2
- package/src/drivers/sql-server/ExpressionToSqlServer.ts +13 -0
- package/src/model/EntityQuery.ts +37 -1
- package/src/model/IFilterWithParameter.ts +2 -0
- package/src/model/changes/ChangeEntry.ts +3 -0
- package/src/query/ast/ExpressionToSql.ts +15 -0
- package/src/query/ast/Expressions.ts +4 -0
- package/src/tests/db-tests/tests/update-items.ts +9 -0
- package/src/tests/expressions/left-joins/child-joins.ts +22 -5
- package/src/tests/expressions/trimInternal.ts +8 -6
- package/src/tests/model/ShoppingContext.ts +3 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowStorage.js","sourceRoot":"","sources":["../../src/workflows/WorkflowStorage.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"WorkflowStorage.js","sourceRoot":"","sources":["../../src/workflows/WorkflowStorage.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@entity-access/entity-access",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.226",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -52,6 +52,6 @@
|
|
|
52
52
|
"eslint-plugin-promise": "^6.1.1",
|
|
53
53
|
"eslint-plugin-react": "^7.32.2",
|
|
54
54
|
"mssql": "^9.1.1",
|
|
55
|
-
"typescript": "^5.
|
|
55
|
+
"typescript": "^5.3.2"
|
|
56
56
|
}
|
|
57
57
|
}
|
|
@@ -163,6 +163,19 @@ export default class ExpressionToSqlServer extends ExpressionToSql {
|
|
|
163
163
|
// const as = e.as ? prepare ` AS ${this.visit(e.as)}` : "";
|
|
164
164
|
const offset = showFetch ? prepare ` OFFSET ${Number(e.offset).toString()} ROWS ` : "";
|
|
165
165
|
const next = showFetch ? prepare ` FETCH NEXT ${Number(e.limit).toString()} ROWS ONLY` : "";
|
|
166
|
+
if (e.updateStatement) {
|
|
167
|
+
const s = e.source;
|
|
168
|
+
switch(s.type) {
|
|
169
|
+
case "Identifier":
|
|
170
|
+
case "TableLiteral":
|
|
171
|
+
break;
|
|
172
|
+
default:
|
|
173
|
+
throw new Error(`${s.type} Not supported`);
|
|
174
|
+
}
|
|
175
|
+
return prepare `UPDATE ${top} ${this.visit(e.source)} SET
|
|
176
|
+
${fields}
|
|
177
|
+
FROM ${source}${as}${joins}${where}${orderBy}${offset}${next}`;
|
|
178
|
+
}
|
|
166
179
|
return prepare `SELECT ${top}
|
|
167
180
|
${fields}
|
|
168
181
|
FROM ${source}${as}${joins}${where}${orderBy}${offset}${next}`;
|
package/src/model/EntityQuery.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { AsyncDisposableScope } from "../common/usingAsync.js";
|
|
|
4
4
|
import { ServiceProvider } from "../di/di.js";
|
|
5
5
|
import { IDbReader } from "../drivers/base/BaseDriver.js";
|
|
6
6
|
import EntityType from "../entity-query/EntityType.js";
|
|
7
|
-
import { CallExpression, Expression, ExpressionAs, Identifier, InsertStatement, NewObjectExpression, NumberLiteral, OrderByExpression, SelectStatement, TableLiteral } from "../query/ast/Expressions.js";
|
|
7
|
+
import { BinaryExpression, CallExpression, Expression, ExpressionAs, Identifier, InsertStatement, NewObjectExpression, NumberLiteral, OrderByExpression, SelectStatement, TableLiteral } from "../query/ast/Expressions.js";
|
|
8
8
|
import { ITextQuery } from "../query/ast/IStringTransformer.js";
|
|
9
9
|
import { QueryExpander } from "../query/expander/QueryExpander.js";
|
|
10
10
|
import EntityContext from "./EntityContext.js";
|
|
@@ -111,6 +111,42 @@ export default class EntityQuery<T = any>
|
|
|
111
111
|
});
|
|
112
112
|
}
|
|
113
113
|
|
|
114
|
+
async update(p, f): Promise<number> {
|
|
115
|
+
const q = this.extend(p, f, (select, body) => {
|
|
116
|
+
const fields = [] as Expression[];
|
|
117
|
+
switch(body.type) {
|
|
118
|
+
case "NewObjectExpression":
|
|
119
|
+
const noe = body as NewObjectExpression;
|
|
120
|
+
for (const iterator of noe.properties) {
|
|
121
|
+
const column = this.type.getProperty(iterator.alias.value);
|
|
122
|
+
fields.push(Expression.equal(
|
|
123
|
+
Expression.quotedIdentifier(column.field.columnName),
|
|
124
|
+
iterator.expression
|
|
125
|
+
));
|
|
126
|
+
}
|
|
127
|
+
break;
|
|
128
|
+
default:
|
|
129
|
+
fields.push(body);
|
|
130
|
+
break;
|
|
131
|
+
|
|
132
|
+
}
|
|
133
|
+
return { ... select, fields };
|
|
134
|
+
});
|
|
135
|
+
q.selectStatement.updateStatement = true;
|
|
136
|
+
|
|
137
|
+
const session = this.context.logger?.newSession() ?? Logger.nullLogger;
|
|
138
|
+
let query;
|
|
139
|
+
try {
|
|
140
|
+
query = this.context.driver.compiler.compileExpression(q, q.selectStatement);
|
|
141
|
+
this.traceQuery?.(query.text);
|
|
142
|
+
const r = await this.context.connection.executeQuery(query);
|
|
143
|
+
return r.updated;
|
|
144
|
+
} catch (error) {
|
|
145
|
+
session.error(`Failed executing ${query?.text}\r\n${error.stack ?? error}`);
|
|
146
|
+
throw error;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
114
150
|
async toArray(): Promise<T[]> {
|
|
115
151
|
const results: T[] = [];
|
|
116
152
|
for await (const iterator of this.enumerate()) {
|
|
@@ -246,6 +246,9 @@ export default class ChangeEntry<T = any> implements IChanges {
|
|
|
246
246
|
continue;
|
|
247
247
|
}
|
|
248
248
|
|
|
249
|
+
if(!relatedChanges.dependents.has(this)) {
|
|
250
|
+
relatedChanges.dependents.add(this);
|
|
251
|
+
}
|
|
249
252
|
this.entity[iterator.fkColumn.name] = related[rKey.name];
|
|
250
253
|
}
|
|
251
254
|
}
|
|
@@ -89,6 +89,21 @@ export default class ExpressionToSql extends Visitor<ITextQuery> {
|
|
|
89
89
|
const as = e.sourceParameter ? prepare ` AS ${this.scope.nameOf(e.sourceParameter)}` : "";
|
|
90
90
|
const fields = this.visitArray(e.fields, ",\n\t\t");
|
|
91
91
|
const joins = e.joins?.length > 0 ? prepare `\n\t\t${this.visitArray(e.joins, "\n")}` : [];
|
|
92
|
+
|
|
93
|
+
if (e.updateStatement) {
|
|
94
|
+
const s = e.source;
|
|
95
|
+
switch(s.type) {
|
|
96
|
+
case "Identifier":
|
|
97
|
+
case "TableLiteral":
|
|
98
|
+
break;
|
|
99
|
+
default:
|
|
100
|
+
throw new Error(`${s.type} Not supported`);
|
|
101
|
+
}
|
|
102
|
+
return prepare `UPDATE ${this.visit(e.source)} SET
|
|
103
|
+
${fields}
|
|
104
|
+
FROM ${source}${as}${joins}${where}${orderBy}${limit}${offset}`;
|
|
105
|
+
}
|
|
106
|
+
|
|
92
107
|
return prepare `SELECT
|
|
93
108
|
${fields}
|
|
94
109
|
FROM ${source}${as}${joins}${where}${orderBy}${limit}${offset}`;
|
|
@@ -256,6 +256,8 @@ export class SelectStatement extends Expression {
|
|
|
256
256
|
|
|
257
257
|
preferLeftJoins: boolean;
|
|
258
258
|
|
|
259
|
+
updateStatement: boolean;
|
|
260
|
+
|
|
259
261
|
source: TableSource | ValuesStatement;
|
|
260
262
|
|
|
261
263
|
sourceParameter: ParameterExpression;
|
|
@@ -412,6 +414,8 @@ export class UpdateStatement extends Expression {
|
|
|
412
414
|
|
|
413
415
|
where: Expression;
|
|
414
416
|
|
|
417
|
+
joins: JoinExpression[];
|
|
418
|
+
|
|
415
419
|
}
|
|
416
420
|
|
|
417
421
|
export class UpsertStatement extends Expression {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Sql } from "../../../index.js";
|
|
1
2
|
import { TestConfig } from "../../TestConfig.js";
|
|
2
3
|
import { createContext } from "../../model/createContext.js";
|
|
3
4
|
|
|
@@ -14,4 +15,12 @@ export default async function(this: TestConfig) {
|
|
|
14
15
|
first.name = "First product";
|
|
15
16
|
|
|
16
17
|
await context.saveChanges();
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
await context.products
|
|
21
|
+
.where(void 0, (p) => (x) => x.productID > 0)
|
|
22
|
+
.trace(console.log)
|
|
23
|
+
.update(void 0, (p) => (x) => ({
|
|
24
|
+
productDescription: "updated"
|
|
25
|
+
}));
|
|
17
26
|
}
|
|
@@ -8,7 +8,8 @@ const sql1 = `SELECT
|
|
|
8
8
|
p1.product_id,
|
|
9
9
|
p1.name,
|
|
10
10
|
p1.owner_id,
|
|
11
|
-
p1.status
|
|
11
|
+
p1.status,
|
|
12
|
+
p1.product_description
|
|
12
13
|
FROM products AS p1
|
|
13
14
|
WHERE EXISTS (SELECT
|
|
14
15
|
1
|
|
@@ -19,7 +20,8 @@ const sql2 = `SELECT
|
|
|
19
20
|
p1.product_id,
|
|
20
21
|
p1.name,
|
|
21
22
|
p1.owner_id,
|
|
22
|
-
p1.status
|
|
23
|
+
p1.status,
|
|
24
|
+
p1.product_description
|
|
23
25
|
FROM products AS p1
|
|
24
26
|
WHERE EXISTS (SELECT
|
|
25
27
|
1
|
|
@@ -33,7 +35,8 @@ const sql3 = `SELECT
|
|
|
33
35
|
p1.product_id,
|
|
34
36
|
p1.name,
|
|
35
37
|
p1.owner_id,
|
|
36
|
-
p1.status
|
|
38
|
+
p1.status,
|
|
39
|
+
p1.product_description
|
|
37
40
|
FROM products AS p1
|
|
38
41
|
WHERE EXISTS (SELECT
|
|
39
42
|
1
|
|
@@ -48,7 +51,8 @@ const productJoin = `SELECT
|
|
|
48
51
|
p1.product_id,
|
|
49
52
|
p1.name,
|
|
50
53
|
p1.owner_id,
|
|
51
|
-
p1.status
|
|
54
|
+
p1.status,
|
|
55
|
+
p1.product_description
|
|
52
56
|
FROM products AS p1
|
|
53
57
|
LEFT JOIN users AS u ON p1.owner_id = u.user_id
|
|
54
58
|
WHERE u.date_created > $1`;
|
|
@@ -64,7 +68,20 @@ FROM order_items AS o1
|
|
|
64
68
|
LEFT JOIN products AS p ON o1.product_id = p.product_id
|
|
65
69
|
WHERE (o1.product_id = $1) OR (p.owner_id = $2)`;
|
|
66
70
|
|
|
67
|
-
const notExp =
|
|
71
|
+
const notExp = `SELECT
|
|
72
|
+
p1.product_id,
|
|
73
|
+
p1.name,
|
|
74
|
+
p1.owner_id,
|
|
75
|
+
p1.status,
|
|
76
|
+
p1.product_description
|
|
77
|
+
FROM products AS p1
|
|
78
|
+
WHERE EXISTS
|
|
79
|
+
(SELECT 1 FROM order_items AS o
|
|
80
|
+
WHERE (p1.product_id = o.product_id) AND (o.product_id = $1)) AND
|
|
81
|
+
NOT (EXISTS (SELECT 1 FROM order_items AS o1
|
|
82
|
+
INNER JOIN orders AS o2 ON o1.order_id = o2.order_id
|
|
83
|
+
WHERE (p1.product_id = o1.product_id) AND (o2.order_date > $2)))
|
|
84
|
+
`;
|
|
68
85
|
|
|
69
86
|
export default function() {
|
|
70
87
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AssertionError } from "assert";
|
|
1
|
+
import assert, { AssertionError } from "assert";
|
|
2
2
|
|
|
3
3
|
export const trimInternal = (text: string) => {
|
|
4
4
|
let r = "";
|
|
@@ -8,16 +8,18 @@ export const trimInternal = (text: string) => {
|
|
|
8
8
|
case "\t":
|
|
9
9
|
case "\r":
|
|
10
10
|
case " ":
|
|
11
|
+
if (!r.endsWith(" ")) {
|
|
12
|
+
r += " ";
|
|
13
|
+
}
|
|
11
14
|
continue;
|
|
12
15
|
}
|
|
13
16
|
r += iterator;
|
|
14
17
|
}
|
|
15
|
-
return r;
|
|
18
|
+
return r.trim();
|
|
16
19
|
};
|
|
17
20
|
|
|
18
21
|
export const assertSqlMatch = (expected: string, actual: string) => {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
throw new AssertionError({ expected, actual, operator: "===" });
|
|
22
|
+
const expectedTrimmed = trimInternal(expected);
|
|
23
|
+
const actualTrimmed = trimInternal(actual);
|
|
24
|
+
assert.strictEqual(actualTrimmed, expectedTrimmed);
|
|
23
25
|
};
|
|
@@ -212,6 +212,9 @@ export class Product {
|
|
|
212
212
|
@Column({ dataType: "Char", length: 20})
|
|
213
213
|
public status: string;
|
|
214
214
|
|
|
215
|
+
@Column({ dataType: "Char", nullable: true})
|
|
216
|
+
public productDescription: string;
|
|
217
|
+
|
|
215
218
|
public orderItems: OrderItem[];
|
|
216
219
|
public prices: ProductPrice[];
|
|
217
220
|
public categories: ProductCategory[];
|