@aneuhold/be-ts-db-lib 4.2.1 → 4.2.3

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 (50) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/lib/index.d.ts +15 -1
  3. package/lib/index.d.ts.map +1 -1
  4. package/lib/index.js +15 -1
  5. package/lib/index.js.map +1 -1
  6. package/lib/index.ts +29 -1
  7. package/lib/repositories/BaseRepository.js +4 -4
  8. package/lib/repositories/BaseRepository.js.map +1 -1
  9. package/lib/repositories/BaseRepository.ts +4 -4
  10. package/lib/util/DbOperationMetaData.d.ts +21 -0
  11. package/lib/util/DbOperationMetaData.d.ts.map +1 -1
  12. package/lib/util/DbOperationMetaData.js +28 -0
  13. package/lib/util/DbOperationMetaData.js.map +1 -1
  14. package/lib/util/DbOperationMetaData.ts +32 -0
  15. package/lib/validators/BaseValidator.d.ts +9 -4
  16. package/lib/validators/BaseValidator.d.ts.map +1 -1
  17. package/lib/validators/BaseValidator.js +6 -4
  18. package/lib/validators/BaseValidator.js.map +1 -1
  19. package/lib/validators/BaseValidator.ts +18 -6
  20. package/lib/validators/workout/ExerciseCalibrationValidator.d.ts +3 -2
  21. package/lib/validators/workout/ExerciseCalibrationValidator.d.ts.map +1 -1
  22. package/lib/validators/workout/ExerciseCalibrationValidator.js +18 -11
  23. package/lib/validators/workout/ExerciseCalibrationValidator.js.map +1 -1
  24. package/lib/validators/workout/ExerciseCalibrationValidator.ts +26 -14
  25. package/lib/validators/workout/ExerciseValidator.d.ts +3 -2
  26. package/lib/validators/workout/ExerciseValidator.d.ts.map +1 -1
  27. package/lib/validators/workout/ExerciseValidator.js +32 -18
  28. package/lib/validators/workout/ExerciseValidator.js.map +1 -1
  29. package/lib/validators/workout/ExerciseValidator.ts +47 -24
  30. package/lib/validators/workout/MicrocycleValidator.d.ts +3 -2
  31. package/lib/validators/workout/MicrocycleValidator.d.ts.map +1 -1
  32. package/lib/validators/workout/MicrocycleValidator.js +16 -10
  33. package/lib/validators/workout/MicrocycleValidator.js.map +1 -1
  34. package/lib/validators/workout/MicrocycleValidator.ts +26 -13
  35. package/lib/validators/workout/SessionExerciseValidator.d.ts +3 -2
  36. package/lib/validators/workout/SessionExerciseValidator.d.ts.map +1 -1
  37. package/lib/validators/workout/SessionExerciseValidator.js +30 -18
  38. package/lib/validators/workout/SessionExerciseValidator.js.map +1 -1
  39. package/lib/validators/workout/SessionExerciseValidator.ts +39 -18
  40. package/lib/validators/workout/SessionValidator.d.ts +3 -2
  41. package/lib/validators/workout/SessionValidator.d.ts.map +1 -1
  42. package/lib/validators/workout/SessionValidator.js +16 -10
  43. package/lib/validators/workout/SessionValidator.js.map +1 -1
  44. package/lib/validators/workout/SessionValidator.ts +26 -13
  45. package/lib/validators/workout/SetValidator.d.ts +3 -2
  46. package/lib/validators/workout/SetValidator.d.ts.map +1 -1
  47. package/lib/validators/workout/SetValidator.js +22 -15
  48. package/lib/validators/workout/SetValidator.js.map +1 -1
  49. package/lib/validators/workout/SetValidator.ts +34 -20
  50. package/package.json +3 -3
package/CHANGELOG.md CHANGED
@@ -5,6 +5,20 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## 🔖 [4.2.3] (2026-02-15)
9
+
10
+ ### 🏗️ Changed
11
+
12
+ - Updated dependencies: now requires `@aneuhold/be-ts-lib@^3.0.13` and `@aneuhold/core-ts-db-lib@^4.1.2`.
13
+
14
+ ## 🔖 [4.2.2] (2026-02-07)
15
+
16
+ ### 🏗️ Changed
17
+
18
+ - Updated dependency: now requires `@aneuhold/be-ts-lib@^3.0.12`.
19
+ - Enhanced workout validators to support pending document creation via new `DbOperationMetaData` parameter (microcycle, session, session exercise, set validators).
20
+ - Improved error handling and validation logic for workout document relationships.
21
+
8
22
  ## 🔖 [4.2.1] (2026-02-06)
9
23
 
10
24
  ### 🏗️ Changed
@@ -219,6 +233,8 @@ Updated dependencies: now requires `@aneuhold/core-ts-db-lib@^3.0.0`, `@aneuhold
219
233
 
220
234
  <!-- Link References -->
221
235
 
236
+ [4.2.3]: https://github.com/aneuhold/ts-libs/compare/be-ts-db-lib-v4.2.2...be-ts-db-lib-v4.2.3
237
+ [4.2.2]: https://github.com/aneuhold/ts-libs/compare/be-ts-db-lib-v4.2.1...be-ts-db-lib-v4.2.2
222
238
  [4.2.1]: https://github.com/aneuhold/ts-libs/compare/be-ts-db-lib-v4.2.0...be-ts-db-lib-v4.2.1
223
239
  [4.2.0]: https://github.com/aneuhold/ts-libs/compare/be-ts-db-lib-v4.1.2...be-ts-db-lib-v4.2.0
224
240
  [4.1.2]: https://github.com/aneuhold/ts-libs/compare/be-ts-db-lib-v4.1.1...be-ts-db-lib-v4.1.2
package/lib/index.d.ts CHANGED
@@ -1,11 +1,25 @@
1
+ import BaseRepository from './repositories/BaseRepository.js';
1
2
  import ApiKeyRepository from './repositories/common/ApiKeyRepository.js';
2
3
  import UserRepository from './repositories/common/UserRepository.js';
4
+ import DashboardBaseRepository from './repositories/dashboard/DashboardBaseRepository.js';
5
+ import DashboardBaseWithUserIdRepository from './repositories/dashboard/DashboardBaseWithUserIdRepository.js';
3
6
  import DashboardNonogramKatanaItemRepository from './repositories/dashboard/DashboardNonogramKatanaItemRepository.js';
4
7
  import DashboardNonogramKatanaUpgradeRepository from './repositories/dashboard/DashboardNonogramKatanaUpgradeRepository.js';
5
8
  import DashboardTaskRepository from './repositories/dashboard/DashboardTaskRepository.js';
6
9
  import DashboardUserConfigRepository from './repositories/dashboard/DashboardUserConfigRepository.js';
10
+ import WorkoutBaseRepository from './repositories/workout/WorkoutBaseRepository.js';
11
+ import WorkoutBaseWithUserIdRepository from './repositories/workout/WorkoutBaseWithUserIdRepository.js';
12
+ import WorkoutEquipmentTypeRepository from './repositories/workout/WorkoutEquipmentTypeRepository.js';
13
+ import WorkoutExerciseCalibrationRepository from './repositories/workout/WorkoutExerciseCalibrationRepository.js';
14
+ import WorkoutExerciseRepository from './repositories/workout/WorkoutExerciseRepository.js';
15
+ import WorkoutMesocycleRepository from './repositories/workout/WorkoutMesocycleRepository.js';
16
+ import WorkoutMicrocycleRepository from './repositories/workout/WorkoutMicrocycleRepository.js';
17
+ import WorkoutMuscleGroupRepository from './repositories/workout/WorkoutMuscleGroupRepository.js';
18
+ import WorkoutSessionExerciseRepository from './repositories/workout/WorkoutSessionExerciseRepository.js';
19
+ import WorkoutSessionRepository from './repositories/workout/WorkoutSessionRepository.js';
20
+ import WorkoutSetRepository from './repositories/workout/WorkoutSetRepository.js';
7
21
  import DbOperationMetaData from './util/DbOperationMetaData.js';
8
22
  import DocumentDb from './util/DocumentDb.js';
9
- export { ApiKeyRepository, DashboardNonogramKatanaItemRepository, DashboardNonogramKatanaUpgradeRepository, DashboardTaskRepository, DashboardUserConfigRepository, DbOperationMetaData, DocumentDb, UserRepository };
23
+ export { ApiKeyRepository, BaseRepository, DashboardBaseRepository, DashboardBaseWithUserIdRepository, DashboardNonogramKatanaItemRepository, DashboardNonogramKatanaUpgradeRepository, DashboardTaskRepository, DashboardUserConfigRepository, DbOperationMetaData, DocumentDb, UserRepository, WorkoutBaseRepository, WorkoutBaseWithUserIdRepository, WorkoutEquipmentTypeRepository, WorkoutExerciseCalibrationRepository, WorkoutExerciseRepository, WorkoutMesocycleRepository, WorkoutMicrocycleRepository, WorkoutMuscleGroupRepository, WorkoutSessionExerciseRepository, WorkoutSessionRepository, WorkoutSetRepository };
10
24
  export type {};
11
25
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,2CAA2C,CAAC;AACzE,OAAO,cAAc,MAAM,yCAAyC,CAAC;AACrE,OAAO,qCAAqC,MAAM,mEAAmE,CAAC;AACtH,OAAO,wCAAwC,MAAM,sEAAsE,CAAC;AAC5H,OAAO,uBAAuB,MAAM,qDAAqD,CAAC;AAC1F,OAAO,6BAA6B,MAAM,2DAA2D,CAAC;AACtG,OAAO,mBAAmB,MAAM,+BAA+B,CAAC;AAChE,OAAO,UAAU,MAAM,sBAAsB,CAAC;AAG9C,OAAO,EACL,gBAAgB,EAChB,qCAAqC,EACrC,wCAAwC,EACxC,uBAAuB,EACvB,6BAA6B,EAC7B,mBAAmB,EACnB,UAAU,EACV,cAAc,EACf,CAAC;AAGF,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,kCAAkC,CAAC;AAC9D,OAAO,gBAAgB,MAAM,2CAA2C,CAAC;AACzE,OAAO,cAAc,MAAM,yCAAyC,CAAC;AACrE,OAAO,uBAAuB,MAAM,qDAAqD,CAAC;AAC1F,OAAO,iCAAiC,MAAM,+DAA+D,CAAC;AAC9G,OAAO,qCAAqC,MAAM,mEAAmE,CAAC;AACtH,OAAO,wCAAwC,MAAM,sEAAsE,CAAC;AAC5H,OAAO,uBAAuB,MAAM,qDAAqD,CAAC;AAC1F,OAAO,6BAA6B,MAAM,2DAA2D,CAAC;AACtG,OAAO,qBAAqB,MAAM,iDAAiD,CAAC;AACpF,OAAO,+BAA+B,MAAM,2DAA2D,CAAC;AACxG,OAAO,8BAA8B,MAAM,0DAA0D,CAAC;AACtG,OAAO,oCAAoC,MAAM,gEAAgE,CAAC;AAClH,OAAO,yBAAyB,MAAM,qDAAqD,CAAC;AAC5F,OAAO,0BAA0B,MAAM,sDAAsD,CAAC;AAC9F,OAAO,2BAA2B,MAAM,uDAAuD,CAAC;AAChG,OAAO,4BAA4B,MAAM,wDAAwD,CAAC;AAClG,OAAO,gCAAgC,MAAM,4DAA4D,CAAC;AAC1G,OAAO,wBAAwB,MAAM,oDAAoD,CAAC;AAC1F,OAAO,oBAAoB,MAAM,gDAAgD,CAAC;AAClF,OAAO,mBAAmB,MAAM,+BAA+B,CAAC;AAChE,OAAO,UAAU,MAAM,sBAAsB,CAAC;AAG9C,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,uBAAuB,EACvB,iCAAiC,EACjC,qCAAqC,EACrC,wCAAwC,EACxC,uBAAuB,EACvB,6BAA6B,EAC7B,mBAAmB,EACnB,UAAU,EACV,cAAc,EACd,qBAAqB,EACrB,+BAA+B,EAC/B,8BAA8B,EAC9B,oCAAoC,EACpC,yBAAyB,EACzB,0BAA0B,EAC1B,2BAA2B,EAC3B,4BAA4B,EAC5B,gCAAgC,EAChC,wBAAwB,EACxB,oBAAoB,EACrB,CAAC;AAGF,YAAY,EAAE,CAAC"}
package/lib/index.js CHANGED
@@ -1,11 +1,25 @@
1
+ import BaseRepository from './repositories/BaseRepository.js';
1
2
  import ApiKeyRepository from './repositories/common/ApiKeyRepository.js';
2
3
  import UserRepository from './repositories/common/UserRepository.js';
4
+ import DashboardBaseRepository from './repositories/dashboard/DashboardBaseRepository.js';
5
+ import DashboardBaseWithUserIdRepository from './repositories/dashboard/DashboardBaseWithUserIdRepository.js';
3
6
  import DashboardNonogramKatanaItemRepository from './repositories/dashboard/DashboardNonogramKatanaItemRepository.js';
4
7
  import DashboardNonogramKatanaUpgradeRepository from './repositories/dashboard/DashboardNonogramKatanaUpgradeRepository.js';
5
8
  import DashboardTaskRepository from './repositories/dashboard/DashboardTaskRepository.js';
6
9
  import DashboardUserConfigRepository from './repositories/dashboard/DashboardUserConfigRepository.js';
10
+ import WorkoutBaseRepository from './repositories/workout/WorkoutBaseRepository.js';
11
+ import WorkoutBaseWithUserIdRepository from './repositories/workout/WorkoutBaseWithUserIdRepository.js';
12
+ import WorkoutEquipmentTypeRepository from './repositories/workout/WorkoutEquipmentTypeRepository.js';
13
+ import WorkoutExerciseCalibrationRepository from './repositories/workout/WorkoutExerciseCalibrationRepository.js';
14
+ import WorkoutExerciseRepository from './repositories/workout/WorkoutExerciseRepository.js';
15
+ import WorkoutMesocycleRepository from './repositories/workout/WorkoutMesocycleRepository.js';
16
+ import WorkoutMicrocycleRepository from './repositories/workout/WorkoutMicrocycleRepository.js';
17
+ import WorkoutMuscleGroupRepository from './repositories/workout/WorkoutMuscleGroupRepository.js';
18
+ import WorkoutSessionExerciseRepository from './repositories/workout/WorkoutSessionExerciseRepository.js';
19
+ import WorkoutSessionRepository from './repositories/workout/WorkoutSessionRepository.js';
20
+ import WorkoutSetRepository from './repositories/workout/WorkoutSetRepository.js';
7
21
  import DbOperationMetaData from './util/DbOperationMetaData.js';
8
22
  import DocumentDb from './util/DocumentDb.js';
9
23
  // Export all the functions and classes from this library
10
- export { ApiKeyRepository, DashboardNonogramKatanaItemRepository, DashboardNonogramKatanaUpgradeRepository, DashboardTaskRepository, DashboardUserConfigRepository, DbOperationMetaData, DocumentDb, UserRepository };
24
+ export { ApiKeyRepository, BaseRepository, DashboardBaseRepository, DashboardBaseWithUserIdRepository, DashboardNonogramKatanaItemRepository, DashboardNonogramKatanaUpgradeRepository, DashboardTaskRepository, DashboardUserConfigRepository, DbOperationMetaData, DocumentDb, UserRepository, WorkoutBaseRepository, WorkoutBaseWithUserIdRepository, WorkoutEquipmentTypeRepository, WorkoutExerciseCalibrationRepository, WorkoutExerciseRepository, WorkoutMesocycleRepository, WorkoutMicrocycleRepository, WorkoutMuscleGroupRepository, WorkoutSessionExerciseRepository, WorkoutSessionRepository, WorkoutSetRepository };
11
25
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,2CAA2C,CAAC;AACzE,OAAO,cAAc,MAAM,yCAAyC,CAAC;AACrE,OAAO,qCAAqC,MAAM,mEAAmE,CAAC;AACtH,OAAO,wCAAwC,MAAM,sEAAsE,CAAC;AAC5H,OAAO,uBAAuB,MAAM,qDAAqD,CAAC;AAC1F,OAAO,6BAA6B,MAAM,2DAA2D,CAAC;AACtG,OAAO,mBAAmB,MAAM,+BAA+B,CAAC;AAChE,OAAO,UAAU,MAAM,sBAAsB,CAAC;AAE9C,yDAAyD;AACzD,OAAO,EACL,gBAAgB,EAChB,qCAAqC,EACrC,wCAAwC,EACxC,uBAAuB,EACvB,6BAA6B,EAC7B,mBAAmB,EACnB,UAAU,EACV,cAAc,EACf,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,kCAAkC,CAAC;AAC9D,OAAO,gBAAgB,MAAM,2CAA2C,CAAC;AACzE,OAAO,cAAc,MAAM,yCAAyC,CAAC;AACrE,OAAO,uBAAuB,MAAM,qDAAqD,CAAC;AAC1F,OAAO,iCAAiC,MAAM,+DAA+D,CAAC;AAC9G,OAAO,qCAAqC,MAAM,mEAAmE,CAAC;AACtH,OAAO,wCAAwC,MAAM,sEAAsE,CAAC;AAC5H,OAAO,uBAAuB,MAAM,qDAAqD,CAAC;AAC1F,OAAO,6BAA6B,MAAM,2DAA2D,CAAC;AACtG,OAAO,qBAAqB,MAAM,iDAAiD,CAAC;AACpF,OAAO,+BAA+B,MAAM,2DAA2D,CAAC;AACxG,OAAO,8BAA8B,MAAM,0DAA0D,CAAC;AACtG,OAAO,oCAAoC,MAAM,gEAAgE,CAAC;AAClH,OAAO,yBAAyB,MAAM,qDAAqD,CAAC;AAC5F,OAAO,0BAA0B,MAAM,sDAAsD,CAAC;AAC9F,OAAO,2BAA2B,MAAM,uDAAuD,CAAC;AAChG,OAAO,4BAA4B,MAAM,wDAAwD,CAAC;AAClG,OAAO,gCAAgC,MAAM,4DAA4D,CAAC;AAC1G,OAAO,wBAAwB,MAAM,oDAAoD,CAAC;AAC1F,OAAO,oBAAoB,MAAM,gDAAgD,CAAC;AAClF,OAAO,mBAAmB,MAAM,+BAA+B,CAAC;AAChE,OAAO,UAAU,MAAM,sBAAsB,CAAC;AAE9C,yDAAyD;AACzD,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,uBAAuB,EACvB,iCAAiC,EACjC,qCAAqC,EACrC,wCAAwC,EACxC,uBAAuB,EACvB,6BAA6B,EAC7B,mBAAmB,EACnB,UAAU,EACV,cAAc,EACd,qBAAqB,EACrB,+BAA+B,EAC/B,8BAA8B,EAC9B,oCAAoC,EACpC,yBAAyB,EACzB,0BAA0B,EAC1B,2BAA2B,EAC3B,4BAA4B,EAC5B,gCAAgC,EAChC,wBAAwB,EACxB,oBAAoB,EACrB,CAAC"}
package/lib/index.ts CHANGED
@@ -1,22 +1,50 @@
1
+ import BaseRepository from './repositories/BaseRepository.js';
1
2
  import ApiKeyRepository from './repositories/common/ApiKeyRepository.js';
2
3
  import UserRepository from './repositories/common/UserRepository.js';
4
+ import DashboardBaseRepository from './repositories/dashboard/DashboardBaseRepository.js';
5
+ import DashboardBaseWithUserIdRepository from './repositories/dashboard/DashboardBaseWithUserIdRepository.js';
3
6
  import DashboardNonogramKatanaItemRepository from './repositories/dashboard/DashboardNonogramKatanaItemRepository.js';
4
7
  import DashboardNonogramKatanaUpgradeRepository from './repositories/dashboard/DashboardNonogramKatanaUpgradeRepository.js';
5
8
  import DashboardTaskRepository from './repositories/dashboard/DashboardTaskRepository.js';
6
9
  import DashboardUserConfigRepository from './repositories/dashboard/DashboardUserConfigRepository.js';
10
+ import WorkoutBaseRepository from './repositories/workout/WorkoutBaseRepository.js';
11
+ import WorkoutBaseWithUserIdRepository from './repositories/workout/WorkoutBaseWithUserIdRepository.js';
12
+ import WorkoutEquipmentTypeRepository from './repositories/workout/WorkoutEquipmentTypeRepository.js';
13
+ import WorkoutExerciseCalibrationRepository from './repositories/workout/WorkoutExerciseCalibrationRepository.js';
14
+ import WorkoutExerciseRepository from './repositories/workout/WorkoutExerciseRepository.js';
15
+ import WorkoutMesocycleRepository from './repositories/workout/WorkoutMesocycleRepository.js';
16
+ import WorkoutMicrocycleRepository from './repositories/workout/WorkoutMicrocycleRepository.js';
17
+ import WorkoutMuscleGroupRepository from './repositories/workout/WorkoutMuscleGroupRepository.js';
18
+ import WorkoutSessionExerciseRepository from './repositories/workout/WorkoutSessionExerciseRepository.js';
19
+ import WorkoutSessionRepository from './repositories/workout/WorkoutSessionRepository.js';
20
+ import WorkoutSetRepository from './repositories/workout/WorkoutSetRepository.js';
7
21
  import DbOperationMetaData from './util/DbOperationMetaData.js';
8
22
  import DocumentDb from './util/DocumentDb.js';
9
23
 
10
24
  // Export all the functions and classes from this library
11
25
  export {
12
26
  ApiKeyRepository,
27
+ BaseRepository,
28
+ DashboardBaseRepository,
29
+ DashboardBaseWithUserIdRepository,
13
30
  DashboardNonogramKatanaItemRepository,
14
31
  DashboardNonogramKatanaUpgradeRepository,
15
32
  DashboardTaskRepository,
16
33
  DashboardUserConfigRepository,
17
34
  DbOperationMetaData,
18
35
  DocumentDb,
19
- UserRepository
36
+ UserRepository,
37
+ WorkoutBaseRepository,
38
+ WorkoutBaseWithUserIdRepository,
39
+ WorkoutEquipmentTypeRepository,
40
+ WorkoutExerciseCalibrationRepository,
41
+ WorkoutExerciseRepository,
42
+ WorkoutMesocycleRepository,
43
+ WorkoutMicrocycleRepository,
44
+ WorkoutMuscleGroupRepository,
45
+ WorkoutSessionExerciseRepository,
46
+ WorkoutSessionRepository,
47
+ WorkoutSetRepository
20
48
  };
21
49
 
22
50
  // Export TypeScript types where needed
@@ -75,7 +75,7 @@ export default class BaseRepository {
75
75
  */
76
76
  async insertNew(newDoc, meta) {
77
77
  const collection = await this.getCollection();
78
- await this.validator.validateNewObject(newDoc);
78
+ await this.validator.validateNewObject(newDoc, meta);
79
79
  const insertResult = await collection.insertOne(newDoc);
80
80
  if (!insertResult.acknowledged) {
81
81
  return null;
@@ -92,7 +92,7 @@ export default class BaseRepository {
92
92
  */
93
93
  async insertMany(newDocs, meta) {
94
94
  const collection = await this.getCollection();
95
- await Promise.all(newDocs.map((doc) => this.validator.validateNewObject(doc)));
95
+ await Promise.all(newDocs.map((doc) => this.validator.validateNewObject(doc, meta)));
96
96
  const insertResult = await collection.insertMany(newDocs);
97
97
  if (!insertResult.acknowledged) {
98
98
  return [];
@@ -205,7 +205,7 @@ export default class BaseRepository {
205
205
  */
206
206
  async update(updatedDoc, meta) {
207
207
  const collection = await this.getCollection();
208
- await this.validator.validateUpdateObject(updatedDoc);
208
+ await this.validator.validateUpdateObject(updatedDoc, meta);
209
209
  const docId = updatedDoc._id;
210
210
  const cleanedDoc = this.cleanUpdateObject(updatedDoc);
211
211
  const result = collection.updateOne({ _id: docId }, {
@@ -225,7 +225,7 @@ export default class BaseRepository {
225
225
  */
226
226
  async updateMany(updatedDocs, meta) {
227
227
  const collection = await this.getCollection();
228
- await Promise.all(updatedDocs.map((doc) => this.validator.validateUpdateObject(doc)));
228
+ await Promise.all(updatedDocs.map((doc) => this.validator.validateUpdateObject(doc, meta)));
229
229
  const bulkOps = updatedDocs.map((doc) => {
230
230
  const docId = doc._id;
231
231
  const cleanedDoc = this.cleanUpdateObject(doc);
@@ -1 +1 @@
1
- {"version":3,"file":"BaseRepository.js","sourceRoot":"","sources":["../../src/repositories/BaseRepository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BaseRepository.js","sourceRoot":"","sources":["../../src/repositories/BaseRepository.ts"],"names":[],"mappings":"AAYA,OAAO,uBAAuB,MAAM,wCAAwC,CAAC;AAE7E,OAAO,eAAe,MAAM,4BAA4B,CAAC;AACzD,OAAO,UAAU,MAAM,uBAAuB,CAAC;AAG/C;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,OAAgB,cAAc;IAkBhC;IACA;IACA;IAnBA,cAAc,CAAS;IAEzB,UAAU,CAAyB;IAEjC,WAAW,GACnB,uBAAuB,CAAC,qBAAqB,EAAa,CAAC;IAE7D;;;;;;;OAOG;IACH,YACE,cAAsB,EACd,SAAgC,EAChC,aAAkC,EAClC,oBAAsE;QAFtE,cAAS,GAAT,SAAS,CAAuB;QAChC,kBAAa,GAAb,aAAa,CAAqB;QAClC,yBAAoB,GAApB,oBAAoB,CAAkD;QAE9E,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACO,KAAK,CAAC,aAAa;QAC3B,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,IAAI,CAAC,UAAU,GAAG,MAAM,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACtE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAID;;;;;OAKG;IACH,kBAAkB,CAAC,SAAmC;QACpD,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;QAC9E,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,SAAS,CAAC,MAAiB,EAAE,IAA0B;QAC3D,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC9C,MAAM,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACrD,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,MAA6C,CAAC,CAAC;QAC/F,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5F,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,UAAU,CAAC,OAAoB,EAAE,IAA0B;QAC/D,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC9C,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QACrF,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,UAAU,CAC9C,OAAgD,CACjD,CAAC;QACF,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;YAC/B,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9F,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,GAAG,CAAC,MAA0B;QAClC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAA2B,CAAC,CAAC,CAAC;QAChG,OAAO,MAA0B,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAM;QACV,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QAC5E,0DAA0D;QAC1D,OAAO,MAAgC,CAAC;IAC1C,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,eAAe;QACnB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACpC,OAAO,OAAO,CAAC,MAAM,CAA0B,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC1D,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YACpB,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,OAAO,CAAC,MAAc;QAC1B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,MAAM,UAAU;aAC5B,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAuB,CAAC,CAAC;aAC9E,OAAO,EAAE,CAAC;QACb,OAAO,MAAqB,CAAC;IAC/B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,iBAAiB,CAAC,MAAyB;QAC/C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QAClF,OAAO,MAAqB,CAAC;IAC/B,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,MAAM,CAAC,KAAW,EAAE,IAA0B;QAClD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC9C,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3F,OAAO,UAAU,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,KAAK,EAAuB,CAAC,CAAC;IACnE,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,IAA0B;QACzD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC9C,MAAM,YAAY,GAAG,UAAU,CAAC,UAAU,CAAC;YACzC,GAAG,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE;SACA,CAAC,CAAC;QACxB,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7F,OAAO,YAAY,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,SAAS;QACb,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC9C,OAAO,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,MAAM,CAAC,UAA8B,EAAE,IAA0B;QACrE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC9C,MAAM,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAE5D,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC;QAE7B,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAEtD,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,KAAK,EAAuB,EAAE;YACvE,IAAI,EAAE,UAAU;SACjB,CAAC,CAAC;QACH,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAChG,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,UAAU,CACd,WAAsC,EACtC,IAA0B;QAE1B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC9C,MAAM,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAE5F,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACtC,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC;YACtB,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;YAC/C,OAAO;gBACL,SAAS,EAAE;oBACT,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE;oBACtB,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;iBAC7B;aACF,CAAC;QACJ,CAAC,CAAuC,CAAC;QAEzC,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAC/E,CAAC;QAEF,OAAO,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAED;;;;;;;;OAQG;IACO,KAAK,CAAC,wBAAwB,CACtC,MAAc,EACd,IAAyB;QAEzB,MAAM,aAAa,GAAW,EAAE,CAAC;QACjC,MAAM,UAAU,GAAgB,EAAE,CAAC;QAEnC,oBAAoB;QACpB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAY,KAAK,CAAC,CAAC;YACnD,IAAI,MAAM,EAAE,CAAC;gBACX,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACN,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QAED,sBAAsB;QACtB,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YACtD,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC1B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAC5B,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;;;OAKG;IACO,oBAAoB,CAAC,SAA4B,EAAE;QAC3D,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,iDAAiD;QACjD,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;IAC9C,CAAC;IAED;;;;;;OAMG;IACO,kBAAkB,CAAC,MAAc,EAAE,MAAc;QACzD,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;YACpC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACnD,CAAC;IAED;;;;;;;;OAQG;IACK,iBAAiB,CAAC,UAA8B;QACtD,OAAO,IAAI,CAAC,oBAAoB;YAC9B,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;YAC3D,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC;CACF"}
@@ -98,7 +98,7 @@ export default abstract class BaseRepository<TBaseType extends BaseDocument> {
98
98
  */
99
99
  async insertNew(newDoc: TBaseType, meta?: DbOperationMetaData): Promise<TBaseType | null> {
100
100
  const collection = await this.getCollection();
101
- await this.validator.validateNewObject(newDoc);
101
+ await this.validator.validateNewObject(newDoc, meta);
102
102
  const insertResult = await collection.insertOne(newDoc as OptionalUnlessRequiredId<TBaseType>);
103
103
  if (!insertResult.acknowledged) {
104
104
  return null;
@@ -116,7 +116,7 @@ export default abstract class BaseRepository<TBaseType extends BaseDocument> {
116
116
  */
117
117
  async insertMany(newDocs: TBaseType[], meta?: DbOperationMetaData): Promise<TBaseType[]> {
118
118
  const collection = await this.getCollection();
119
- await Promise.all(newDocs.map((doc) => this.validator.validateNewObject(doc)));
119
+ await Promise.all(newDocs.map((doc) => this.validator.validateNewObject(doc, meta)));
120
120
  const insertResult = await collection.insertMany(
121
121
  newDocs as OptionalUnlessRequiredId<TBaseType>[]
122
122
  );
@@ -240,7 +240,7 @@ export default abstract class BaseRepository<TBaseType extends BaseDocument> {
240
240
  */
241
241
  async update(updatedDoc: Partial<TBaseType>, meta?: DbOperationMetaData): Promise<UpdateResult> {
242
242
  const collection = await this.getCollection();
243
- await this.validator.validateUpdateObject(updatedDoc);
243
+ await this.validator.validateUpdateObject(updatedDoc, meta);
244
244
 
245
245
  const docId = updatedDoc._id;
246
246
 
@@ -267,7 +267,7 @@ export default abstract class BaseRepository<TBaseType extends BaseDocument> {
267
267
  meta?: DbOperationMetaData
268
268
  ): Promise<BulkWriteResult> {
269
269
  const collection = await this.getCollection();
270
- await Promise.all(updatedDocs.map((doc) => this.validator.validateUpdateObject(doc)));
270
+ await Promise.all(updatedDocs.map((doc) => this.validator.validateUpdateObject(doc, meta)));
271
271
 
272
272
  const bulkOps = updatedDocs.map((doc) => {
273
273
  const docId = doc._id;
@@ -1,3 +1,4 @@
1
+ import type { BaseDocument } from '@aneuhold/core-ts-db-lib';
1
2
  import type { UUID } from 'crypto';
2
3
  /**
3
4
  * Tracks metadata about database operations during a single API request.
@@ -9,6 +10,7 @@ export default class DbOperationMetaData {
9
10
  private readonly docTypesTouched;
10
11
  private readonly affectedUserIds;
11
12
  private readonly docCache;
13
+ private readonly pendingDocsToCreate;
12
14
  /**
13
15
  * Records that a doc type was touched by an operation during this request.
14
16
  *
@@ -43,5 +45,24 @@ export default class DbOperationMetaData {
43
45
  * @returns The cached document, or undefined if not found.
44
46
  */
45
47
  getCachedDoc<T>(docId: UUID): T | undefined;
48
+ /**
49
+ * Registers a document that will be created during this request.
50
+ *
51
+ * @param doc - The document to register.
52
+ */
53
+ registerPendingDoc<T extends BaseDocument>(doc: T): void;
54
+ /**
55
+ * Registers multiple documents that will be created during this request.
56
+ *
57
+ * @param docs - The documents to register.
58
+ */
59
+ registerPendingDocs<T extends BaseDocument>(docs: T[]): void;
60
+ /**
61
+ * Checks if a document with the given ID exists in pending docs.
62
+ *
63
+ * @param docId - The ID of the document to check.
64
+ * @returns True if the document is pending creation, false otherwise.
65
+ */
66
+ hasPendingDoc(docId: UUID): boolean;
46
67
  }
47
68
  //# sourceMappingURL=DbOperationMetaData.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DbOperationMetaData.d.ts","sourceRoot":"","sources":["../../src/util/DbOperationMetaData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,mBAAmB;IACtC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqB;IACrD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmB;IACnD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4B;IAErD;;;;OAIG;IACH,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI3C;;;;OAIG;IACH,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI;IAIzC;;OAEG;IACH,kBAAkB,IAAI,GAAG,CAAC,MAAM,CAAC;IAIjC;;OAEG;IACH,kBAAkB,IAAI,GAAG,CAAC,IAAI,CAAC;IAI/B;;;;;OAKG;IACH,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI;IAItC;;;;;OAKG;IACH,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,GAAG,CAAC,GAAG,SAAS;CAG5C"}
1
+ {"version":3,"file":"DbOperationMetaData.d.ts","sourceRoot":"","sources":["../../src/util/DbOperationMetaData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,mBAAmB;IACtC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqB;IACrD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmB;IACnD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4B;IACrD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAiC;IAErE;;;;OAIG;IACH,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI3C;;;;OAIG;IACH,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI;IAIzC;;OAEG;IACH,kBAAkB,IAAI,GAAG,CAAC,MAAM,CAAC;IAIjC;;OAEG;IACH,kBAAkB,IAAI,GAAG,CAAC,IAAI,CAAC;IAI/B;;;;;OAKG;IACH,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI;IAItC;;;;;OAKG;IACH,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,GAAG,CAAC,GAAG,SAAS;IAI3C;;;;OAIG;IACH,kBAAkB,CAAC,CAAC,SAAS,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI;IAIxD;;;;OAIG;IACH,mBAAmB,CAAC,CAAC,SAAS,YAAY,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI;IAM5D;;;;;OAKG;IACH,aAAa,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO;CAGpC"}
@@ -8,6 +8,7 @@ export default class DbOperationMetaData {
8
8
  docTypesTouched = new Set();
9
9
  affectedUserIds = new Set();
10
10
  docCache = new Map();
11
+ pendingDocsToCreate = new Map();
11
12
  /**
12
13
  * Records that a doc type was touched by an operation during this request.
13
14
  *
@@ -54,5 +55,32 @@ export default class DbOperationMetaData {
54
55
  getCachedDoc(docId) {
55
56
  return this.docCache.get(docId);
56
57
  }
58
+ /**
59
+ * Registers a document that will be created during this request.
60
+ *
61
+ * @param doc - The document to register.
62
+ */
63
+ registerPendingDoc(doc) {
64
+ this.pendingDocsToCreate.set(doc._id, doc);
65
+ }
66
+ /**
67
+ * Registers multiple documents that will be created during this request.
68
+ *
69
+ * @param docs - The documents to register.
70
+ */
71
+ registerPendingDocs(docs) {
72
+ docs.forEach((doc) => {
73
+ this.registerPendingDoc(doc);
74
+ });
75
+ }
76
+ /**
77
+ * Checks if a document with the given ID exists in pending docs.
78
+ *
79
+ * @param docId - The ID of the document to check.
80
+ * @returns True if the document is pending creation, false otherwise.
81
+ */
82
+ hasPendingDoc(docId) {
83
+ return this.pendingDocsToCreate.has(docId);
84
+ }
57
85
  }
58
86
  //# sourceMappingURL=DbOperationMetaData.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DbOperationMetaData.js","sourceRoot":"","sources":["../../src/util/DbOperationMetaData.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,mBAAmB;IACrB,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,eAAe,GAAG,IAAI,GAAG,EAAQ,CAAC;IAClC,QAAQ,GAAG,IAAI,GAAG,EAAiB,CAAC;IAErD;;;;OAIG;IACH,oBAAoB,CAAC,OAAe;QAClC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACH,kBAAkB,CAAC,OAAe;QAChC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED;;;;;OAKG;IACH,QAAQ,CAAI,KAAW,EAAE,GAAM;QAC7B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAChC,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAI,KAAW;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAkB,CAAC;IACnD,CAAC;CACF"}
1
+ {"version":3,"file":"DbOperationMetaData.js","sourceRoot":"","sources":["../../src/util/DbOperationMetaData.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,mBAAmB;IACrB,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,eAAe,GAAG,IAAI,GAAG,EAAQ,CAAC;IAClC,QAAQ,GAAG,IAAI,GAAG,EAAiB,CAAC;IACpC,mBAAmB,GAAG,IAAI,GAAG,EAAsB,CAAC;IAErE;;;;OAIG;IACH,oBAAoB,CAAC,OAAe;QAClC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACH,kBAAkB,CAAC,OAAe;QAChC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED;;;;;OAKG;IACH,QAAQ,CAAI,KAAW,EAAE,GAAM;QAC7B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAChC,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAI,KAAW;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAkB,CAAC;IACnD,CAAC;IAED;;;;OAIG;IACH,kBAAkB,CAAyB,GAAM;QAC/C,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7C,CAAC;IAED;;;;OAIG;IACH,mBAAmB,CAAyB,IAAS;QACnD,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACnB,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,aAAa,CAAC,KAAW;QACvB,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;CACF"}
@@ -1,3 +1,4 @@
1
+ import type { BaseDocument } from '@aneuhold/core-ts-db-lib';
1
2
  import type { UUID } from 'crypto';
2
3
 
3
4
  /**
@@ -10,6 +11,7 @@ export default class DbOperationMetaData {
10
11
  private readonly docTypesTouched = new Set<string>();
11
12
  private readonly affectedUserIds = new Set<UUID>();
12
13
  private readonly docCache = new Map<UUID, unknown>();
14
+ private readonly pendingDocsToCreate = new Map<UUID, BaseDocument>();
13
15
 
14
16
  /**
15
17
  * Records that a doc type was touched by an operation during this request.
@@ -62,4 +64,34 @@ export default class DbOperationMetaData {
62
64
  getCachedDoc<T>(docId: UUID): T | undefined {
63
65
  return this.docCache.get(docId) as T | undefined;
64
66
  }
67
+
68
+ /**
69
+ * Registers a document that will be created during this request.
70
+ *
71
+ * @param doc - The document to register.
72
+ */
73
+ registerPendingDoc<T extends BaseDocument>(doc: T): void {
74
+ this.pendingDocsToCreate.set(doc._id, doc);
75
+ }
76
+
77
+ /**
78
+ * Registers multiple documents that will be created during this request.
79
+ *
80
+ * @param docs - The documents to register.
81
+ */
82
+ registerPendingDocs<T extends BaseDocument>(docs: T[]): void {
83
+ docs.forEach((doc) => {
84
+ this.registerPendingDoc(doc);
85
+ });
86
+ }
87
+
88
+ /**
89
+ * Checks if a document with the given ID exists in pending docs.
90
+ *
91
+ * @param docId - The ID of the document to check.
92
+ * @returns True if the document is pending creation, false otherwise.
93
+ */
94
+ hasPendingDoc(docId: UUID): boolean {
95
+ return this.pendingDocsToCreate.has(docId);
96
+ }
65
97
  }
@@ -1,6 +1,7 @@
1
1
  import type { BaseDocument } from '@aneuhold/core-ts-db-lib';
2
2
  import type { UUID } from 'crypto';
3
3
  import type { ZodType } from 'zod';
4
+ import type DbOperationMetaData from '../util/DbOperationMetaData.js';
4
5
  export declare enum ObjectSchemaState {
5
6
  Valid = 0,
6
7
  InvalidAndCorrectable = 1,
@@ -25,15 +26,17 @@ export default abstract class IValidator<TBaseType extends BaseDocument> {
25
26
  * is correct. This includes both schema validation and business logic validation.
26
27
  *
27
28
  * @param object - The object to validate.
29
+ * @param meta - Optional metadata about the current operation, including pending documents.
28
30
  */
29
- validateNewObject(object: TBaseType): Promise<void>;
31
+ validateNewObject(object: TBaseType, meta?: DbOperationMetaData): Promise<void>;
30
32
  /**
31
33
  * Business logic validation for new objects.
32
34
  * Override this method to add custom validation logic.
33
35
  *
34
36
  * @param object - The object to validate.
37
+ * @param meta - Optional metadata about the current operation, including pending documents.
35
38
  */
36
- protected abstract validateNewObjectBusinessLogic(object: TBaseType): Promise<void>;
39
+ protected abstract validateNewObjectBusinessLogic(object: TBaseType, meta?: DbOperationMetaData): Promise<void>;
37
40
  /**
38
41
  * Validates an object that is supposed to be updated in the database.
39
42
  * This includes both schema validation and business logic validation.
@@ -41,15 +44,17 @@ export default abstract class IValidator<TBaseType extends BaseDocument> {
41
44
  * At this point, the fields that do not change should already be stripped.
42
45
  *
43
46
  * @param partialObject - The partial object to validate.
47
+ * @param meta - Optional metadata about the current operation, including pending documents.
44
48
  */
45
- validateUpdateObject(partialObject: Partial<TBaseType>): Promise<void>;
49
+ validateUpdateObject(partialObject: Partial<TBaseType>, meta?: DbOperationMetaData): Promise<void>;
46
50
  /**
47
51
  * Business logic validation for update objects.
48
52
  * Override this method to add custom validation logic.
49
53
  *
50
54
  * @param partialObject - The partial object to validate.
55
+ * @param meta - Optional metadata about the current operation, including pending documents.
51
56
  */
52
- protected abstract validateUpdateObjectBusinessLogic(partialObject: Partial<TBaseType>): Promise<void>;
57
+ protected abstract validateUpdateObjectBusinessLogic(partialObject: Partial<TBaseType>, meta?: DbOperationMetaData): Promise<void>;
53
58
  /**
54
59
  * Validates the entire DB for the repository, and corrects where needed.
55
60
  *
@@ -1 +1 @@
1
- {"version":3,"file":"BaseValidator.d.ts","sourceRoot":"","sources":["../../src/validators/BaseValidator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAEnC,oBAAY,iBAAiB;IAC3B,KAAK,IAAA;IACL,qBAAqB,IAAA;IACrB,uBAAuB,IAAA;CACxB;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,UAAU,CAAC,SAAS,SAAS,YAAY;IAQnE,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC;IACpC,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IARtD;;;;;OAKG;gBAES,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,EAC1B,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAGtD;;;;;OAKG;IACG,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAazD;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,CAAC,8BAA8B,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAEnF;;;;;;;OAOG;IACG,oBAAoB,CAAC,aAAa,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAa5E;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,CAAC,iCAAiC,CAClD,aAAa,EAAE,OAAO,CAAC,SAAS,CAAC,GAChC,OAAO,CAAC,IAAI,CAAC;IAEhB;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,sBAAsB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAE/D;;;;;;;;;;;OAWG;cACa,kCAAkC,CAAC,KAAK,EAAE;QACxD,MAAM,EAAE,OAAO,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAC1B,YAAY,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,OAAO,CAAC;QAC1C,oBAAoB,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK;YAAE,UAAU,EAAE,SAAS,CAAC;YAAC,MAAM,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC;QACvF,gBAAgB,EAAE,CAAC,cAAc,EAAE,IAAI,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5D,cAAc,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KAC9D;IAmFD;;;;;OAKG;IACH,SAAS,CAAC,0BAA0B,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,OAAO;CAG9F"}
1
+ {"version":3,"file":"BaseValidator.d.ts","sourceRoot":"","sources":["../../src/validators/BaseValidator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,KAAK,mBAAmB,MAAM,gCAAgC,CAAC;AAEtE,oBAAY,iBAAiB;IAC3B,KAAK,IAAA;IACL,qBAAqB,IAAA;IACrB,uBAAuB,IAAA;CACxB;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,UAAU,CAAC,SAAS,SAAS,YAAY;IAQnE,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC;IACpC,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IARtD;;;;;OAKG;gBAES,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,EAC1B,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAGtD;;;;;;OAMG;IACG,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAarF;;;;;;OAMG;IACH,SAAS,CAAC,QAAQ,CAAC,8BAA8B,CAC/C,MAAM,EAAE,SAAS,EACjB,IAAI,CAAC,EAAE,mBAAmB,GACzB,OAAO,CAAC,IAAI,CAAC;IAEhB;;;;;;;;OAQG;IACG,oBAAoB,CACxB,aAAa,EAAE,OAAO,CAAC,SAAS,CAAC,EACjC,IAAI,CAAC,EAAE,mBAAmB,GACzB,OAAO,CAAC,IAAI,CAAC;IAahB;;;;;;OAMG;IACH,SAAS,CAAC,QAAQ,CAAC,iCAAiC,CAClD,aAAa,EAAE,OAAO,CAAC,SAAS,CAAC,EACjC,IAAI,CAAC,EAAE,mBAAmB,GACzB,OAAO,CAAC,IAAI,CAAC;IAEhB;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,sBAAsB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAE/D;;;;;;;;;;;OAWG;cACa,kCAAkC,CAAC,KAAK,EAAE;QACxD,MAAM,EAAE,OAAO,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAC1B,YAAY,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,OAAO,CAAC;QAC1C,oBAAoB,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK;YAAE,UAAU,EAAE,SAAS,CAAC;YAAC,MAAM,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC;QACvF,gBAAgB,EAAE,CAAC,cAAc,EAAE,IAAI,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5D,cAAc,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KAC9D;IAmFD;;;;;OAKG;IACH,SAAS,CAAC,0BAA0B,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,OAAO;CAG9F"}
@@ -27,8 +27,9 @@ export default class IValidator {
27
27
  * is correct. This includes both schema validation and business logic validation.
28
28
  *
29
29
  * @param object - The object to validate.
30
+ * @param meta - Optional metadata about the current operation, including pending documents.
30
31
  */
31
- async validateNewObject(object) {
32
+ async validateNewObject(object, meta) {
32
33
  // First validate schema with Zod
33
34
  const parseResult = this.schema.safeParse(object);
34
35
  if (!parseResult.success) {
@@ -38,7 +39,7 @@ export default class IValidator {
38
39
  throw new Error(`Schema validation failed: ${errorMessage}`);
39
40
  }
40
41
  // Then run business logic validation
41
- await this.validateNewObjectBusinessLogic(object);
42
+ await this.validateNewObjectBusinessLogic(object, meta);
42
43
  }
43
44
  /**
44
45
  * Validates an object that is supposed to be updated in the database.
@@ -47,8 +48,9 @@ export default class IValidator {
47
48
  * At this point, the fields that do not change should already be stripped.
48
49
  *
49
50
  * @param partialObject - The partial object to validate.
51
+ * @param meta - Optional metadata about the current operation, including pending documents.
50
52
  */
51
- async validateUpdateObject(partialObject) {
53
+ async validateUpdateObject(partialObject, meta) {
52
54
  // First validate schema with Zod using partial schema
53
55
  const parseResult = this.partialSchema.safeParse(partialObject);
54
56
  if (!parseResult.success) {
@@ -58,7 +60,7 @@ export default class IValidator {
58
60
  throw new Error(`Schema validation failed: ${errorMessage}`);
59
61
  }
60
62
  // Then run business logic validation
61
- await this.validateUpdateObjectBusinessLogic(partialObject);
63
+ await this.validateUpdateObjectBusinessLogic(partialObject, meta);
62
64
  }
63
65
  /**
64
66
  * Runs the standard validation for a repository.
@@ -1 +1 @@
1
- {"version":3,"file":"BaseValidator.js","sourceRoot":"","sources":["../../src/validators/BaseValidator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BaseValidator.js","sourceRoot":"","sources":["../../src/validators/BaseValidator.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import type { BaseDocument } from '@aneuhold/core-ts-db-lib';
2
2
  import { DR } from '@aneuhold/core-ts-lib';
3
3
  import type { UUID } from 'crypto';
4
4
  import type { ZodType } from 'zod';
5
+ import type DbOperationMetaData from '../util/DbOperationMetaData.js';
5
6
 
6
7
  export enum ObjectSchemaState {
7
8
  Valid,
@@ -30,8 +31,9 @@ export default abstract class IValidator<TBaseType extends BaseDocument> {
30
31
  * is correct. This includes both schema validation and business logic validation.
31
32
  *
32
33
  * @param object - The object to validate.
34
+ * @param meta - Optional metadata about the current operation, including pending documents.
33
35
  */
34
- async validateNewObject(object: TBaseType): Promise<void> {
36
+ async validateNewObject(object: TBaseType, meta?: DbOperationMetaData): Promise<void> {
35
37
  // First validate schema with Zod
36
38
  const parseResult = this.schema.safeParse(object);
37
39
  if (!parseResult.success) {
@@ -41,7 +43,7 @@ export default abstract class IValidator<TBaseType extends BaseDocument> {
41
43
  throw new Error(`Schema validation failed: ${errorMessage}`);
42
44
  }
43
45
  // Then run business logic validation
44
- await this.validateNewObjectBusinessLogic(object);
46
+ await this.validateNewObjectBusinessLogic(object, meta);
45
47
  }
46
48
 
47
49
  /**
@@ -49,8 +51,12 @@ export default abstract class IValidator<TBaseType extends BaseDocument> {
49
51
  * Override this method to add custom validation logic.
50
52
  *
51
53
  * @param object - The object to validate.
54
+ * @param meta - Optional metadata about the current operation, including pending documents.
52
55
  */
53
- protected abstract validateNewObjectBusinessLogic(object: TBaseType): Promise<void>;
56
+ protected abstract validateNewObjectBusinessLogic(
57
+ object: TBaseType,
58
+ meta?: DbOperationMetaData
59
+ ): Promise<void>;
54
60
 
55
61
  /**
56
62
  * Validates an object that is supposed to be updated in the database.
@@ -59,8 +65,12 @@ export default abstract class IValidator<TBaseType extends BaseDocument> {
59
65
  * At this point, the fields that do not change should already be stripped.
60
66
  *
61
67
  * @param partialObject - The partial object to validate.
68
+ * @param meta - Optional metadata about the current operation, including pending documents.
62
69
  */
63
- async validateUpdateObject(partialObject: Partial<TBaseType>): Promise<void> {
70
+ async validateUpdateObject(
71
+ partialObject: Partial<TBaseType>,
72
+ meta?: DbOperationMetaData
73
+ ): Promise<void> {
64
74
  // First validate schema with Zod using partial schema
65
75
  const parseResult = this.partialSchema.safeParse(partialObject);
66
76
  if (!parseResult.success) {
@@ -70,7 +80,7 @@ export default abstract class IValidator<TBaseType extends BaseDocument> {
70
80
  throw new Error(`Schema validation failed: ${errorMessage}`);
71
81
  }
72
82
  // Then run business logic validation
73
- await this.validateUpdateObjectBusinessLogic(partialObject);
83
+ await this.validateUpdateObjectBusinessLogic(partialObject, meta);
74
84
  }
75
85
 
76
86
  /**
@@ -78,9 +88,11 @@ export default abstract class IValidator<TBaseType extends BaseDocument> {
78
88
  * Override this method to add custom validation logic.
79
89
  *
80
90
  * @param partialObject - The partial object to validate.
91
+ * @param meta - Optional metadata about the current operation, including pending documents.
81
92
  */
82
93
  protected abstract validateUpdateObjectBusinessLogic(
83
- partialObject: Partial<TBaseType>
94
+ partialObject: Partial<TBaseType>,
95
+ meta?: DbOperationMetaData
84
96
  ): Promise<void>;
85
97
 
86
98
  /**
@@ -1,9 +1,10 @@
1
1
  import type { WorkoutExerciseCalibration } from '@aneuhold/core-ts-db-lib';
2
+ import type DbOperationMetaData from '../../util/DbOperationMetaData.js';
2
3
  import IValidator from '../BaseValidator.js';
3
4
  export default class WorkoutExerciseCalibrationValidator extends IValidator<WorkoutExerciseCalibration> {
4
5
  constructor();
5
- protected validateNewObjectBusinessLogic(newCalibration: WorkoutExerciseCalibration): Promise<void>;
6
- protected validateUpdateObjectBusinessLogic(updatedCalibration: Partial<WorkoutExerciseCalibration>): Promise<void>;
6
+ protected validateNewObjectBusinessLogic(newCalibration: WorkoutExerciseCalibration, meta?: DbOperationMetaData): Promise<void>;
7
+ protected validateUpdateObjectBusinessLogic(updatedCalibration: Partial<WorkoutExerciseCalibration>, meta?: DbOperationMetaData): Promise<void>;
7
8
  validateRepositoryInDb(dryRun: boolean): Promise<void>;
8
9
  }
9
10
  //# sourceMappingURL=ExerciseCalibrationValidator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExerciseCalibrationValidator.d.ts","sourceRoot":"","sources":["../../../src/validators/workout/ExerciseCalibrationValidator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAO3E,OAAO,UAAU,MAAM,qBAAqB,CAAC;AAE7C,MAAM,CAAC,OAAO,OAAO,mCAAoC,SAAQ,UAAU,CAAC,0BAA0B,CAAC;;cAKrF,8BAA8B,CAC5C,cAAc,EAAE,0BAA0B,GACzC,OAAO,CAAC,IAAI,CAAC;cAYA,iCAAiC,CAC/C,kBAAkB,EAAE,OAAO,CAAC,0BAA0B,CAAC,GACtD,OAAO,CAAC,IAAI,CAAC;IAqBV,sBAAsB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAiC7D"}
1
+ {"version":3,"file":"ExerciseCalibrationValidator.d.ts","sourceRoot":"","sources":["../../../src/validators/workout/ExerciseCalibrationValidator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAO3E,OAAO,KAAK,mBAAmB,MAAM,mCAAmC,CAAC;AACzE,OAAO,UAAU,MAAM,qBAAqB,CAAC;AAE7C,MAAM,CAAC,OAAO,OAAO,mCAAoC,SAAQ,UAAU,CAAC,0BAA0B,CAAC;;cAKrF,8BAA8B,CAC5C,cAAc,EAAE,0BAA0B,EAC1C,IAAI,CAAC,EAAE,mBAAmB,GACzB,OAAO,CAAC,IAAI,CAAC;cAiBA,iCAAiC,CAC/C,kBAAkB,EAAE,OAAO,CAAC,0BAA0B,CAAC,EACvD,IAAI,CAAC,EAAE,mBAAmB,GACzB,OAAO,CAAC,IAAI,CAAC;IAyBV,sBAAsB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAiC7D"}