@entity-access/entity-access 1.0.165 → 1.0.167
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 +177 -18
- package/dist/decorators/IColumn.d.ts +2 -0
- package/dist/decorators/IColumn.d.ts.map +1 -1
- package/dist/decorators/IForeignKeyConstraint.d.ts +12 -0
- package/dist/decorators/IForeignKeyConstraint.d.ts.map +1 -0
- package/dist/decorators/IForeignKeyConstraint.js +2 -0
- package/dist/decorators/IForeignKeyConstraint.js.map +1 -0
- package/dist/decorators/Relate.d.ts +5 -0
- package/dist/decorators/Relate.d.ts.map +1 -1
- package/dist/decorators/Relate.js +2 -1
- package/dist/decorators/Relate.js.map +1 -1
- package/dist/drivers/base/BaseDriver.d.ts +2 -1
- package/dist/drivers/base/BaseDriver.d.ts.map +1 -1
- package/dist/drivers/base/BaseDriver.js +75 -1
- package/dist/drivers/base/BaseDriver.js.map +1 -1
- package/dist/drivers/sql-server/ExpressionToSqlServer.d.ts +2 -1
- package/dist/drivers/sql-server/ExpressionToSqlServer.d.ts.map +1 -1
- package/dist/drivers/sql-server/ExpressionToSqlServer.js +64 -2
- package/dist/drivers/sql-server/ExpressionToSqlServer.js.map +1 -1
- package/dist/drivers/sql-server/SqlServerDriver.d.ts.map +1 -1
- package/dist/drivers/sql-server/SqlServerDriver.js +6 -1
- package/dist/drivers/sql-server/SqlServerDriver.js.map +1 -1
- package/dist/entity-query/EntityType.d.ts.map +1 -1
- package/dist/entity-query/EntityType.js +8 -0
- package/dist/entity-query/EntityType.js.map +1 -1
- package/dist/migrations/Migrations.d.ts +3 -1
- package/dist/migrations/Migrations.d.ts.map +1 -1
- package/dist/migrations/Migrations.js +17 -0
- package/dist/migrations/Migrations.js.map +1 -1
- package/dist/migrations/postgres/PostgresAutomaticMigrations.d.ts +2 -0
- package/dist/migrations/postgres/PostgresAutomaticMigrations.d.ts.map +1 -1
- package/dist/migrations/postgres/PostgresAutomaticMigrations.js +39 -0
- package/dist/migrations/postgres/PostgresAutomaticMigrations.js.map +1 -1
- package/dist/migrations/sql-server/SqlServerAutomaticMigrations.d.ts +2 -0
- package/dist/migrations/sql-server/SqlServerAutomaticMigrations.d.ts.map +1 -1
- package/dist/migrations/sql-server/SqlServerAutomaticMigrations.js +39 -0
- package/dist/migrations/sql-server/SqlServerAutomaticMigrations.js.map +1 -1
- package/dist/model/EntitySource.d.ts +2 -0
- package/dist/model/EntitySource.d.ts.map +1 -1
- package/dist/model/EntitySource.js +18 -0
- package/dist/model/EntitySource.js.map +1 -1
- package/dist/query/ast/ExpressionToSql.d.ts +2 -1
- package/dist/query/ast/ExpressionToSql.d.ts.map +1 -1
- package/dist/query/ast/ExpressionToSql.js +53 -1
- package/dist/query/ast/ExpressionToSql.js.map +1 -1
- package/dist/query/ast/Expressions.d.ts +9 -1
- package/dist/query/ast/Expressions.d.ts.map +1 -1
- package/dist/query/ast/Expressions.js +6 -0
- package/dist/query/ast/Expressions.js.map +1 -1
- package/dist/query/ast/Visitor.d.ts +2 -1
- package/dist/query/ast/Visitor.d.ts.map +1 -1
- package/dist/query/ast/Visitor.js +5 -0
- package/dist/query/ast/Visitor.js.map +1 -1
- package/dist/tests/db-tests/tests/upsert-test.d.ts +3 -0
- package/dist/tests/db-tests/tests/upsert-test.d.ts.map +1 -0
- package/dist/tests/db-tests/tests/upsert-test.js +14 -0
- package/dist/tests/db-tests/tests/upsert-test.js.map +1 -0
- package/dist/tests/model/ShoppingContext.d.ts +5 -0
- package/dist/tests/model/ShoppingContext.d.ts.map +1 -1
- package/dist/tests/model/ShoppingContext.js +24 -1
- package/dist/tests/model/ShoppingContext.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/workflows/WorkflowStorage.d.ts +4 -1
- package/dist/workflows/WorkflowStorage.d.ts.map +1 -1
- package/dist/workflows/WorkflowStorage.js +24 -13
- package/dist/workflows/WorkflowStorage.js.map +1 -1
- package/package.json +3 -3
- package/src/decorators/IColumn.ts +3 -0
- package/src/decorators/IForeignKeyConstraint.ts +19 -0
- package/src/decorators/Relate.ts +8 -1
- package/src/drivers/base/BaseDriver.ts +89 -1
- package/src/drivers/sql-server/ExpressionToSqlServer.ts +79 -3
- package/src/drivers/sql-server/SqlServerDriver.ts +6 -1
- package/src/entity-query/EntityType.ts +9 -0
- package/src/migrations/Migrations.ts +25 -2
- package/src/migrations/postgres/PostgresAutomaticMigrations.ts +50 -0
- package/src/migrations/sql-server/SqlServerAutomaticMigrations.ts +47 -0
- package/src/model/EntitySource.ts +24 -1
- package/src/query/ast/ExpressionToSql.ts +67 -2
- package/src/query/ast/Expressions.ts +11 -1
- package/src/query/ast/Visitor.ts +6 -1
- package/src/tests/db-tests/tests/upsert-test.ts +18 -0
- package/src/tests/model/ShoppingContext.ts +22 -1
- package/src/workflows/WorkflowStorage.ts +27 -16
- package/tsconfig.json +1 -1
|
@@ -32,6 +32,8 @@ export class ShoppingContext extends EntityContext {
|
|
|
32
32
|
public profilePhotos = this.model.register(ProfilePhoto);
|
|
33
33
|
|
|
34
34
|
public userFiles = this.model.register(UserFile);
|
|
35
|
+
|
|
36
|
+
public emailAddresses = this.model.register(EmailAddress);
|
|
35
37
|
}
|
|
36
38
|
|
|
37
39
|
@Table("Users")
|
|
@@ -72,6 +74,22 @@ export class User {
|
|
|
72
74
|
public photo: UserFile;
|
|
73
75
|
}
|
|
74
76
|
|
|
77
|
+
@Table("EmailAddresses")
|
|
78
|
+
@Index({
|
|
79
|
+
name: "IX_Unique_EmailAddress",
|
|
80
|
+
columns: [{ name: (x) => x.address , descending: false }],
|
|
81
|
+
unique: true
|
|
82
|
+
})
|
|
83
|
+
export class EmailAddress {
|
|
84
|
+
|
|
85
|
+
@Column({ key: true, generated: "identity"})
|
|
86
|
+
public id: number;
|
|
87
|
+
|
|
88
|
+
@Column({ dataType: "Char", length: 200 })
|
|
89
|
+
public address: string;
|
|
90
|
+
|
|
91
|
+
}
|
|
92
|
+
|
|
75
93
|
@Table("Categories")
|
|
76
94
|
export class Category {
|
|
77
95
|
|
|
@@ -297,7 +315,10 @@ export class OrderItem {
|
|
|
297
315
|
@RelateTo({
|
|
298
316
|
type: () => Order,
|
|
299
317
|
property: (orderItem) => orderItem.order,
|
|
300
|
-
inverseProperty: (order) => order.orderItems
|
|
318
|
+
inverseProperty: (order) => order.orderItems,
|
|
319
|
+
foreignKeyConstraint: {
|
|
320
|
+
cascade: "delete"
|
|
321
|
+
}
|
|
301
322
|
})
|
|
302
323
|
public orderID: number;
|
|
303
324
|
|
|
@@ -10,6 +10,8 @@ import DateTime from "../types/DateTime.js";
|
|
|
10
10
|
import WorkflowClock from "./WorkflowClock.js";
|
|
11
11
|
import RawQuery from "../compiler/RawQuery.js";
|
|
12
12
|
|
|
13
|
+
const loadedFromDb = Symbol("loadedFromDB");
|
|
14
|
+
|
|
13
15
|
@Table("Workflows")
|
|
14
16
|
@Index({
|
|
15
17
|
name: "IX_Workflows_Group",
|
|
@@ -126,6 +128,7 @@ export default class WorkflowStorage {
|
|
|
126
128
|
error: r.error,
|
|
127
129
|
lastID: r.lastID,
|
|
128
130
|
taskGroup: r.taskGroup,
|
|
131
|
+
[loadedFromDb]: true,
|
|
129
132
|
};
|
|
130
133
|
}
|
|
131
134
|
return null;
|
|
@@ -148,7 +151,7 @@ export default class WorkflowStorage {
|
|
|
148
151
|
output: r.output,
|
|
149
152
|
error: r.error,
|
|
150
153
|
lastID: r.lastID,
|
|
151
|
-
|
|
154
|
+
[loadedFromDb]: true
|
|
152
155
|
};
|
|
153
156
|
}
|
|
154
157
|
return null;
|
|
@@ -187,22 +190,30 @@ export default class WorkflowStorage {
|
|
|
187
190
|
const db = new WorkflowContext(this.driver);
|
|
188
191
|
const connection = db.connection;
|
|
189
192
|
await connection.runInTransaction(async () => {
|
|
190
|
-
let w = await db.workflows.where(state, (p) => (x) => x.id === p.id).first();
|
|
191
|
-
if (!w) {
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
for (const key in state) {
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
193
|
+
// let w = await db.workflows.where(state, (p) => (x) => x.id === p.id).first();
|
|
194
|
+
// if (!w) {
|
|
195
|
+
// w = db.workflows.add(state);
|
|
196
|
+
// w.taskGroup ||= "default";
|
|
197
|
+
// }
|
|
198
|
+
|
|
199
|
+
// for (const key in state) {
|
|
200
|
+
// if (Object.prototype.hasOwnProperty.call(state, key)) {
|
|
201
|
+
// const element = state[key];
|
|
202
|
+
// w[key] = element;
|
|
203
|
+
// }
|
|
204
|
+
// }
|
|
205
|
+
|
|
206
|
+
// w.state ||= "queued";
|
|
207
|
+
// w.updated ??= DateTime.utcNow;
|
|
208
|
+
state.state ||= "queued";
|
|
209
|
+
state.updated ??= DateTime.utcNow;
|
|
210
|
+
state.taskGroup ||= "default";
|
|
211
|
+
// await db.saveChanges();
|
|
212
|
+
if(state[loadedFromDb]) {
|
|
213
|
+
await db.workflows.saveDirect(state, "update");
|
|
214
|
+
} else {
|
|
215
|
+
await db.workflows.saveDirect(state, "upsert");
|
|
201
216
|
}
|
|
202
|
-
|
|
203
|
-
w.state ||= "queued";
|
|
204
|
-
w.updated ??= DateTime.utcNow;
|
|
205
|
-
await db.saveChanges();
|
|
206
217
|
});
|
|
207
218
|
}
|
|
208
219
|
|