@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.
- package/CHANGELOG.md +16 -0
- package/lib/index.d.ts +15 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +15 -1
- package/lib/index.js.map +1 -1
- package/lib/index.ts +29 -1
- package/lib/repositories/BaseRepository.js +4 -4
- package/lib/repositories/BaseRepository.js.map +1 -1
- package/lib/repositories/BaseRepository.ts +4 -4
- package/lib/util/DbOperationMetaData.d.ts +21 -0
- package/lib/util/DbOperationMetaData.d.ts.map +1 -1
- package/lib/util/DbOperationMetaData.js +28 -0
- package/lib/util/DbOperationMetaData.js.map +1 -1
- package/lib/util/DbOperationMetaData.ts +32 -0
- package/lib/validators/BaseValidator.d.ts +9 -4
- package/lib/validators/BaseValidator.d.ts.map +1 -1
- package/lib/validators/BaseValidator.js +6 -4
- package/lib/validators/BaseValidator.js.map +1 -1
- package/lib/validators/BaseValidator.ts +18 -6
- package/lib/validators/workout/ExerciseCalibrationValidator.d.ts +3 -2
- package/lib/validators/workout/ExerciseCalibrationValidator.d.ts.map +1 -1
- package/lib/validators/workout/ExerciseCalibrationValidator.js +18 -11
- package/lib/validators/workout/ExerciseCalibrationValidator.js.map +1 -1
- package/lib/validators/workout/ExerciseCalibrationValidator.ts +26 -14
- package/lib/validators/workout/ExerciseValidator.d.ts +3 -2
- package/lib/validators/workout/ExerciseValidator.d.ts.map +1 -1
- package/lib/validators/workout/ExerciseValidator.js +32 -18
- package/lib/validators/workout/ExerciseValidator.js.map +1 -1
- package/lib/validators/workout/ExerciseValidator.ts +47 -24
- package/lib/validators/workout/MicrocycleValidator.d.ts +3 -2
- package/lib/validators/workout/MicrocycleValidator.d.ts.map +1 -1
- package/lib/validators/workout/MicrocycleValidator.js +16 -10
- package/lib/validators/workout/MicrocycleValidator.js.map +1 -1
- package/lib/validators/workout/MicrocycleValidator.ts +26 -13
- package/lib/validators/workout/SessionExerciseValidator.d.ts +3 -2
- package/lib/validators/workout/SessionExerciseValidator.d.ts.map +1 -1
- package/lib/validators/workout/SessionExerciseValidator.js +30 -18
- package/lib/validators/workout/SessionExerciseValidator.js.map +1 -1
- package/lib/validators/workout/SessionExerciseValidator.ts +39 -18
- package/lib/validators/workout/SessionValidator.d.ts +3 -2
- package/lib/validators/workout/SessionValidator.d.ts.map +1 -1
- package/lib/validators/workout/SessionValidator.js +16 -10
- package/lib/validators/workout/SessionValidator.js.map +1 -1
- package/lib/validators/workout/SessionValidator.ts +26 -13
- package/lib/validators/workout/SetValidator.d.ts +3 -2
- package/lib/validators/workout/SetValidator.d.ts.map +1 -1
- package/lib/validators/workout/SetValidator.js +22 -15
- package/lib/validators/workout/SetValidator.js.map +1 -1
- package/lib/validators/workout/SetValidator.ts +34 -20
- 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
|
package/lib/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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,
|
|
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":"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,CAAC,CAAC;
|
|
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;
|
|
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":"
|
|
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
|
|
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
|
|
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;
|
|
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":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAC;
|
|
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(
|
|
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(
|
|
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
|
|
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,
|
|
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"}
|