@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.
Files changed (85) hide show
  1. package/README.md +177 -18
  2. package/dist/decorators/IColumn.d.ts +2 -0
  3. package/dist/decorators/IColumn.d.ts.map +1 -1
  4. package/dist/decorators/IForeignKeyConstraint.d.ts +12 -0
  5. package/dist/decorators/IForeignKeyConstraint.d.ts.map +1 -0
  6. package/dist/decorators/IForeignKeyConstraint.js +2 -0
  7. package/dist/decorators/IForeignKeyConstraint.js.map +1 -0
  8. package/dist/decorators/Relate.d.ts +5 -0
  9. package/dist/decorators/Relate.d.ts.map +1 -1
  10. package/dist/decorators/Relate.js +2 -1
  11. package/dist/decorators/Relate.js.map +1 -1
  12. package/dist/drivers/base/BaseDriver.d.ts +2 -1
  13. package/dist/drivers/base/BaseDriver.d.ts.map +1 -1
  14. package/dist/drivers/base/BaseDriver.js +75 -1
  15. package/dist/drivers/base/BaseDriver.js.map +1 -1
  16. package/dist/drivers/sql-server/ExpressionToSqlServer.d.ts +2 -1
  17. package/dist/drivers/sql-server/ExpressionToSqlServer.d.ts.map +1 -1
  18. package/dist/drivers/sql-server/ExpressionToSqlServer.js +64 -2
  19. package/dist/drivers/sql-server/ExpressionToSqlServer.js.map +1 -1
  20. package/dist/drivers/sql-server/SqlServerDriver.d.ts.map +1 -1
  21. package/dist/drivers/sql-server/SqlServerDriver.js +6 -1
  22. package/dist/drivers/sql-server/SqlServerDriver.js.map +1 -1
  23. package/dist/entity-query/EntityType.d.ts.map +1 -1
  24. package/dist/entity-query/EntityType.js +8 -0
  25. package/dist/entity-query/EntityType.js.map +1 -1
  26. package/dist/migrations/Migrations.d.ts +3 -1
  27. package/dist/migrations/Migrations.d.ts.map +1 -1
  28. package/dist/migrations/Migrations.js +17 -0
  29. package/dist/migrations/Migrations.js.map +1 -1
  30. package/dist/migrations/postgres/PostgresAutomaticMigrations.d.ts +2 -0
  31. package/dist/migrations/postgres/PostgresAutomaticMigrations.d.ts.map +1 -1
  32. package/dist/migrations/postgres/PostgresAutomaticMigrations.js +39 -0
  33. package/dist/migrations/postgres/PostgresAutomaticMigrations.js.map +1 -1
  34. package/dist/migrations/sql-server/SqlServerAutomaticMigrations.d.ts +2 -0
  35. package/dist/migrations/sql-server/SqlServerAutomaticMigrations.d.ts.map +1 -1
  36. package/dist/migrations/sql-server/SqlServerAutomaticMigrations.js +39 -0
  37. package/dist/migrations/sql-server/SqlServerAutomaticMigrations.js.map +1 -1
  38. package/dist/model/EntitySource.d.ts +2 -0
  39. package/dist/model/EntitySource.d.ts.map +1 -1
  40. package/dist/model/EntitySource.js +18 -0
  41. package/dist/model/EntitySource.js.map +1 -1
  42. package/dist/query/ast/ExpressionToSql.d.ts +2 -1
  43. package/dist/query/ast/ExpressionToSql.d.ts.map +1 -1
  44. package/dist/query/ast/ExpressionToSql.js +53 -1
  45. package/dist/query/ast/ExpressionToSql.js.map +1 -1
  46. package/dist/query/ast/Expressions.d.ts +9 -1
  47. package/dist/query/ast/Expressions.d.ts.map +1 -1
  48. package/dist/query/ast/Expressions.js +6 -0
  49. package/dist/query/ast/Expressions.js.map +1 -1
  50. package/dist/query/ast/Visitor.d.ts +2 -1
  51. package/dist/query/ast/Visitor.d.ts.map +1 -1
  52. package/dist/query/ast/Visitor.js +5 -0
  53. package/dist/query/ast/Visitor.js.map +1 -1
  54. package/dist/tests/db-tests/tests/upsert-test.d.ts +3 -0
  55. package/dist/tests/db-tests/tests/upsert-test.d.ts.map +1 -0
  56. package/dist/tests/db-tests/tests/upsert-test.js +14 -0
  57. package/dist/tests/db-tests/tests/upsert-test.js.map +1 -0
  58. package/dist/tests/model/ShoppingContext.d.ts +5 -0
  59. package/dist/tests/model/ShoppingContext.d.ts.map +1 -1
  60. package/dist/tests/model/ShoppingContext.js +24 -1
  61. package/dist/tests/model/ShoppingContext.js.map +1 -1
  62. package/dist/tsconfig.tsbuildinfo +1 -1
  63. package/dist/workflows/WorkflowStorage.d.ts +4 -1
  64. package/dist/workflows/WorkflowStorage.d.ts.map +1 -1
  65. package/dist/workflows/WorkflowStorage.js +24 -13
  66. package/dist/workflows/WorkflowStorage.js.map +1 -1
  67. package/package.json +3 -3
  68. package/src/decorators/IColumn.ts +3 -0
  69. package/src/decorators/IForeignKeyConstraint.ts +19 -0
  70. package/src/decorators/Relate.ts +8 -1
  71. package/src/drivers/base/BaseDriver.ts +89 -1
  72. package/src/drivers/sql-server/ExpressionToSqlServer.ts +79 -3
  73. package/src/drivers/sql-server/SqlServerDriver.ts +6 -1
  74. package/src/entity-query/EntityType.ts +9 -0
  75. package/src/migrations/Migrations.ts +25 -2
  76. package/src/migrations/postgres/PostgresAutomaticMigrations.ts +50 -0
  77. package/src/migrations/sql-server/SqlServerAutomaticMigrations.ts +47 -0
  78. package/src/model/EntitySource.ts +24 -1
  79. package/src/query/ast/ExpressionToSql.ts +67 -2
  80. package/src/query/ast/Expressions.ts +11 -1
  81. package/src/query/ast/Visitor.ts +6 -1
  82. package/src/tests/db-tests/tests/upsert-test.ts +18 -0
  83. package/src/tests/model/ShoppingContext.ts +22 -1
  84. package/src/workflows/WorkflowStorage.ts +27 -16
  85. 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
- taskGroup: r.taskGroup
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
- w = db.workflows.add(state);
193
- w.taskGroup ||= "default";
194
- }
195
-
196
- for (const key in state) {
197
- if (Object.prototype.hasOwnProperty.call(state, key)) {
198
- const element = state[key];
199
- w[key] = element;
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
 
package/tsconfig.json CHANGED
@@ -13,7 +13,7 @@
13
13
  "emitDecoratorMetadata": true,
14
14
  "lib": [
15
15
  "ES2018",
16
- "esnext.disposable"
16
+ "ESNext.Disposable"
17
17
  ]
18
18
  },
19
19
  "include": [