@aneuhold/be-ts-db-lib 4.1.2 → 4.2.0
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 +18 -0
- package/README.md +1 -0
- package/lib/repositories/BaseRepository.d.ts +8 -1
- package/lib/repositories/BaseRepository.d.ts.map +1 -1
- package/lib/repositories/BaseRepository.js +13 -1
- package/lib/repositories/BaseRepository.js.map +1 -1
- package/lib/repositories/BaseRepository.ts +14 -1
- package/lib/repositories/common/UserRepository.d.ts.map +1 -1
- package/lib/repositories/common/UserRepository.js +12 -0
- package/lib/repositories/common/UserRepository.js.map +1 -1
- package/lib/repositories/common/UserRepository.ts +12 -0
- package/lib/repositories/dashboard/DashboardBaseWithUserIdRepository.d.ts +20 -0
- package/lib/repositories/dashboard/DashboardBaseWithUserIdRepository.d.ts.map +1 -1
- package/lib/repositories/dashboard/DashboardBaseWithUserIdRepository.js +36 -4
- package/lib/repositories/dashboard/DashboardBaseWithUserIdRepository.js.map +1 -1
- package/lib/repositories/dashboard/DashboardBaseWithUserIdRepository.ts +39 -4
- package/lib/repositories/dashboard/DashboardNonogramKatanaItemRepository.d.ts.map +1 -1
- package/lib/repositories/dashboard/DashboardNonogramKatanaItemRepository.js +2 -12
- package/lib/repositories/dashboard/DashboardNonogramKatanaItemRepository.js.map +1 -1
- package/lib/repositories/dashboard/DashboardNonogramKatanaItemRepository.ts +2 -16
- package/lib/repositories/dashboard/DashboardNonogramKatanaUpgradeRepository.d.ts.map +1 -1
- package/lib/repositories/dashboard/DashboardNonogramKatanaUpgradeRepository.js +2 -12
- package/lib/repositories/dashboard/DashboardNonogramKatanaUpgradeRepository.js.map +1 -1
- package/lib/repositories/dashboard/DashboardNonogramKatanaUpgradeRepository.ts +2 -16
- package/lib/repositories/dashboard/DashboardTaskRepository.d.ts +14 -0
- package/lib/repositories/dashboard/DashboardTaskRepository.d.ts.map +1 -1
- package/lib/repositories/dashboard/DashboardTaskRepository.js +33 -35
- package/lib/repositories/dashboard/DashboardTaskRepository.js.map +1 -1
- package/lib/repositories/dashboard/DashboardTaskRepository.ts +41 -45
- package/lib/repositories/dashboard/DashboardUserConfigRepository.d.ts +14 -0
- package/lib/repositories/dashboard/DashboardUserConfigRepository.d.ts.map +1 -1
- package/lib/repositories/dashboard/DashboardUserConfigRepository.js +26 -15
- package/lib/repositories/dashboard/DashboardUserConfigRepository.js.map +1 -1
- package/lib/repositories/dashboard/DashboardUserConfigRepository.ts +38 -21
- package/lib/repositories/workout/WorkoutBaseRepository.d.ts +22 -0
- package/lib/repositories/workout/WorkoutBaseRepository.d.ts.map +1 -0
- package/lib/repositories/workout/WorkoutBaseRepository.js +53 -0
- package/lib/repositories/workout/WorkoutBaseRepository.js.map +1 -0
- package/lib/repositories/workout/WorkoutBaseRepository.ts +85 -0
- package/lib/repositories/workout/WorkoutBaseWithUserIdRepository.d.ts +40 -0
- package/lib/repositories/workout/WorkoutBaseWithUserIdRepository.d.ts.map +1 -0
- package/lib/repositories/workout/WorkoutBaseWithUserIdRepository.js +96 -0
- package/lib/repositories/workout/WorkoutBaseWithUserIdRepository.js.map +1 -0
- package/lib/repositories/workout/WorkoutBaseWithUserIdRepository.ts +134 -0
- package/lib/repositories/workout/WorkoutEquipmentTypeRepository.d.ts +17 -0
- package/lib/repositories/workout/WorkoutEquipmentTypeRepository.d.ts.map +1 -0
- package/lib/repositories/workout/WorkoutEquipmentTypeRepository.js +34 -0
- package/lib/repositories/workout/WorkoutEquipmentTypeRepository.js.map +1 -0
- package/lib/repositories/workout/WorkoutEquipmentTypeRepository.ts +40 -0
- package/lib/repositories/workout/WorkoutExerciseCalibrationRepository.d.ts +31 -0
- package/lib/repositories/workout/WorkoutExerciseCalibrationRepository.d.ts.map +1 -0
- package/lib/repositories/workout/WorkoutExerciseCalibrationRepository.js +70 -0
- package/lib/repositories/workout/WorkoutExerciseCalibrationRepository.js.map +1 -0
- package/lib/repositories/workout/WorkoutExerciseCalibrationRepository.ts +84 -0
- package/lib/repositories/workout/WorkoutExerciseRepository.d.ts +14 -0
- package/lib/repositories/workout/WorkoutExerciseRepository.d.ts.map +1 -0
- package/lib/repositories/workout/WorkoutExerciseRepository.js +34 -0
- package/lib/repositories/workout/WorkoutExerciseRepository.js.map +1 -0
- package/lib/repositories/workout/WorkoutExerciseRepository.ts +40 -0
- package/lib/repositories/workout/WorkoutMesocycleRepository.d.ts +14 -0
- package/lib/repositories/workout/WorkoutMesocycleRepository.d.ts.map +1 -0
- package/lib/repositories/workout/WorkoutMesocycleRepository.js +34 -0
- package/lib/repositories/workout/WorkoutMesocycleRepository.js.map +1 -0
- package/lib/repositories/workout/WorkoutMesocycleRepository.ts +40 -0
- package/lib/repositories/workout/WorkoutMicrocycleRepository.d.ts +31 -0
- package/lib/repositories/workout/WorkoutMicrocycleRepository.d.ts.map +1 -0
- package/lib/repositories/workout/WorkoutMicrocycleRepository.js +72 -0
- package/lib/repositories/workout/WorkoutMicrocycleRepository.js.map +1 -0
- package/lib/repositories/workout/WorkoutMicrocycleRepository.ts +86 -0
- package/lib/repositories/workout/WorkoutMuscleGroupRepository.d.ts +20 -0
- package/lib/repositories/workout/WorkoutMuscleGroupRepository.d.ts.map +1 -0
- package/lib/repositories/workout/WorkoutMuscleGroupRepository.js +37 -0
- package/lib/repositories/workout/WorkoutMuscleGroupRepository.js.map +1 -0
- package/lib/repositories/workout/WorkoutMuscleGroupRepository.ts +43 -0
- package/lib/repositories/workout/WorkoutSessionExerciseRepository.d.ts +31 -0
- package/lib/repositories/workout/WorkoutSessionExerciseRepository.d.ts.map +1 -0
- package/lib/repositories/workout/WorkoutSessionExerciseRepository.js +72 -0
- package/lib/repositories/workout/WorkoutSessionExerciseRepository.js.map +1 -0
- package/lib/repositories/workout/WorkoutSessionExerciseRepository.ts +86 -0
- package/lib/repositories/workout/WorkoutSessionRepository.d.ts +31 -0
- package/lib/repositories/workout/WorkoutSessionRepository.d.ts.map +1 -0
- package/lib/repositories/workout/WorkoutSessionRepository.js +72 -0
- package/lib/repositories/workout/WorkoutSessionRepository.js.map +1 -0
- package/lib/repositories/workout/WorkoutSessionRepository.ts +86 -0
- package/lib/repositories/workout/WorkoutSetRepository.d.ts +31 -0
- package/lib/repositories/workout/WorkoutSetRepository.d.ts.map +1 -0
- package/lib/repositories/workout/WorkoutSetRepository.js +69 -0
- package/lib/repositories/workout/WorkoutSetRepository.js.map +1 -0
- package/lib/repositories/workout/WorkoutSetRepository.ts +89 -0
- package/lib/util/DbSchemaUpdater.d.ts.map +1 -1
- package/lib/util/DbSchemaUpdater.js +25 -0
- package/lib/util/DbSchemaUpdater.js.map +1 -1
- package/lib/util/DbSchemaUpdater.ts +27 -0
- package/lib/util/DocumentCleaner.d.ts +2 -1
- package/lib/util/DocumentCleaner.d.ts.map +1 -1
- package/lib/util/DocumentCleaner.js +5 -0
- package/lib/util/DocumentCleaner.js.map +1 -1
- package/lib/util/DocumentCleaner.ts +14 -1
- package/lib/util/globalTestVariables.d.ts +8 -0
- package/lib/util/globalTestVariables.d.ts.map +1 -0
- package/lib/util/globalTestVariables.js +8 -0
- package/lib/util/globalTestVariables.js.map +1 -0
- package/lib/{tests → util}/globalTestVariables.ts +3 -0
- package/lib/validators/common/UserValidator.js +1 -1
- package/lib/validators/common/UserValidator.js.map +1 -1
- package/lib/validators/common/UserValidator.ts +1 -1
- package/lib/validators/workout/EquipmentTypeValidator.d.ts +9 -0
- package/lib/validators/workout/EquipmentTypeValidator.d.ts.map +1 -0
- package/lib/validators/workout/EquipmentTypeValidator.js +43 -0
- package/lib/validators/workout/EquipmentTypeValidator.js.map +1 -0
- package/lib/validators/workout/EquipmentTypeValidator.ts +56 -0
- package/lib/validators/workout/ExerciseCalibrationValidator.d.ts +9 -0
- package/lib/validators/workout/ExerciseCalibrationValidator.d.ts.map +1 -0
- package/lib/validators/workout/ExerciseCalibrationValidator.js +65 -0
- package/lib/validators/workout/ExerciseCalibrationValidator.js.map +1 -0
- package/lib/validators/workout/ExerciseCalibrationValidator.ts +85 -0
- package/lib/validators/workout/ExerciseValidator.d.ts +9 -0
- package/lib/validators/workout/ExerciseValidator.d.ts.map +1 -0
- package/lib/validators/workout/ExerciseValidator.js +117 -0
- package/lib/validators/workout/ExerciseValidator.js.map +1 -0
- package/lib/validators/workout/ExerciseValidator.ts +156 -0
- package/lib/validators/workout/MesocycleValidator.d.ts +9 -0
- package/lib/validators/workout/MesocycleValidator.d.ts.map +1 -0
- package/lib/validators/workout/MesocycleValidator.js +56 -0
- package/lib/validators/workout/MesocycleValidator.js.map +1 -0
- package/lib/validators/workout/MesocycleValidator.ts +73 -0
- package/lib/validators/workout/MicrocycleValidator.d.ts +9 -0
- package/lib/validators/workout/MicrocycleValidator.d.ts.map +1 -0
- package/lib/validators/workout/MicrocycleValidator.js +73 -0
- package/lib/validators/workout/MicrocycleValidator.js.map +1 -0
- package/lib/validators/workout/MicrocycleValidator.ts +91 -0
- package/lib/validators/workout/MuscleGroupValidator.d.ts +9 -0
- package/lib/validators/workout/MuscleGroupValidator.d.ts.map +1 -0
- package/lib/validators/workout/MuscleGroupValidator.js +43 -0
- package/lib/validators/workout/MuscleGroupValidator.js.map +1 -0
- package/lib/validators/workout/MuscleGroupValidator.ts +53 -0
- package/lib/validators/workout/SessionExerciseValidator.d.ts +9 -0
- package/lib/validators/workout/SessionExerciseValidator.d.ts.map +1 -0
- package/lib/validators/workout/SessionExerciseValidator.js +94 -0
- package/lib/validators/workout/SessionExerciseValidator.js.map +1 -0
- package/lib/validators/workout/SessionExerciseValidator.ts +117 -0
- package/lib/validators/workout/SessionValidator.d.ts +9 -0
- package/lib/validators/workout/SessionValidator.d.ts.map +1 -0
- package/lib/validators/workout/SessionValidator.js +73 -0
- package/lib/validators/workout/SessionValidator.js.map +1 -0
- package/lib/validators/workout/SessionValidator.ts +89 -0
- package/lib/validators/workout/SetValidator.d.ts +9 -0
- package/lib/validators/workout/SetValidator.d.ts.map +1 -0
- package/lib/validators/workout/SetValidator.js +69 -0
- package/lib/validators/workout/SetValidator.js.map +1 -0
- package/lib/validators/workout/SetValidator.ts +88 -0
- package/package.json +6 -5
- package/lib/tests/globalTestVariables.d.ts +0 -5
- package/lib/tests/globalTestVariables.d.ts.map +0 -1
- package/lib/tests/globalTestVariables.js +0 -5
- package/lib/tests/globalTestVariables.js.map +0 -1
- package/lib/tests/testsUtil.d.ts +0 -34
- package/lib/tests/testsUtil.d.ts.map +0 -1
- package/lib/tests/testsUtil.js +0 -60
- package/lib/tests/testsUtil.js.map +0 -1
- package/lib/tests/testsUtil.ts +0 -68
|
@@ -29,43 +29,10 @@ export default class DashboardTaskRepository extends DashboardBaseWithUserIdRepo
|
|
|
29
29
|
const taskRepo = DashboardTaskRepository.getRepo();
|
|
30
30
|
return {
|
|
31
31
|
deleteOne: async (userId, meta) => {
|
|
32
|
-
|
|
33
|
-
// Get all tasks owned by the user to report sharedWith users
|
|
34
|
-
if (meta) {
|
|
35
|
-
const tasksOwnedByUser = await taskCollection
|
|
36
|
-
.find({ userId, docType: DashboardTask_docType })
|
|
37
|
-
.toArray();
|
|
38
|
-
tasksOwnedByUser.forEach((task) => {
|
|
39
|
-
meta.addAffectedUserIds(task.sharedWith);
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
// Remove all tasks for the user
|
|
43
|
-
await taskCollection.deleteMany({ userId, docType: DashboardTask_docType });
|
|
44
|
-
// Remove all assignedTo references for the user
|
|
45
|
-
await taskCollection.updateMany({ assignedTo: userId, docType: DashboardTask_docType }, { $set: { assignedTo: undefined } });
|
|
46
|
-
meta?.recordDocTypeTouched(DashboardTask_docType);
|
|
47
|
-
meta?.addAffectedUserIds([userId]);
|
|
32
|
+
await taskRepo.deleteAllForUserWithCleanup(userId, meta);
|
|
48
33
|
},
|
|
49
34
|
deleteList: async (userIds, meta) => {
|
|
50
|
-
|
|
51
|
-
// Get all tasks owned by the users to report sharedWith users
|
|
52
|
-
if (meta) {
|
|
53
|
-
const tasksOwnedByUsers = await taskCollection
|
|
54
|
-
.find({ userId: { $in: userIds }, docType: DashboardTask_docType })
|
|
55
|
-
.toArray();
|
|
56
|
-
tasksOwnedByUsers.forEach((task) => {
|
|
57
|
-
meta.addAffectedUserIds(task.sharedWith);
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
// Remove all tasks for the users
|
|
61
|
-
await taskCollection.deleteMany({
|
|
62
|
-
userId: { $in: userIds },
|
|
63
|
-
docType: DashboardTask_docType
|
|
64
|
-
});
|
|
65
|
-
// Remove all assignedTo references for the users
|
|
66
|
-
await taskCollection.updateMany({ assignedTo: { $in: userIds }, docType: DashboardTask_docType }, { $set: { assignedTo: undefined } });
|
|
67
|
-
meta?.recordDocTypeTouched(DashboardTask_docType);
|
|
68
|
-
meta?.addAffectedUserIds(userIds);
|
|
35
|
+
await taskRepo.deleteAllForUsersWithCleanup(userIds, meta);
|
|
69
36
|
}
|
|
70
37
|
};
|
|
71
38
|
}
|
|
@@ -202,5 +169,36 @@ export default class DashboardTaskRepository extends DashboardBaseWithUserIdRepo
|
|
|
202
169
|
const childrenIds = DashboardTaskService.getChildrenIds(allUserTasks, taskIds);
|
|
203
170
|
return [...taskIds, ...childrenIds];
|
|
204
171
|
}
|
|
172
|
+
/**
|
|
173
|
+
* Deletes all tasks for a user and cleans up assignedTo references.
|
|
174
|
+
*
|
|
175
|
+
* @param userId - The user ID to delete tasks for.
|
|
176
|
+
* @param meta - Tracks database operation metadata for a single request.
|
|
177
|
+
*/
|
|
178
|
+
async deleteAllForUserWithCleanup(userId, meta) {
|
|
179
|
+
await this.deleteAllForUsersWithCleanup([userId], meta);
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Deletes all tasks for users and cleans up assignedTo references.
|
|
183
|
+
*
|
|
184
|
+
* @param userIds - The user IDs to delete tasks for.
|
|
185
|
+
* @param meta - Tracks database operation metadata for a single request.
|
|
186
|
+
*/
|
|
187
|
+
async deleteAllForUsersWithCleanup(userIds, meta) {
|
|
188
|
+
const taskCollection = await this.getCollection();
|
|
189
|
+
// Get all tasks owned by the users to report sharedWith users
|
|
190
|
+
if (meta) {
|
|
191
|
+
const tasksOwnedByUsers = await taskCollection
|
|
192
|
+
.find({ userId: { $in: userIds }, docType: DashboardTask_docType })
|
|
193
|
+
.toArray();
|
|
194
|
+
tasksOwnedByUsers.forEach((task) => {
|
|
195
|
+
meta.addAffectedUserIds(task.sharedWith);
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
// Delete all tasks for the users
|
|
199
|
+
await this.deleteAllForUsers(userIds, meta);
|
|
200
|
+
// Remove all assignedTo references for the users
|
|
201
|
+
await taskCollection.updateMany({ assignedTo: { $in: userIds }, docType: DashboardTask_docType }, { $set: { assignedTo: undefined } });
|
|
202
|
+
}
|
|
205
203
|
}
|
|
206
204
|
//# sourceMappingURL=DashboardTaskRepository.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DashboardTaskRepository.js","sourceRoot":"","sources":["../../../src/repositories/dashboard/DashboardTaskRepository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAKvF,OAAO,aAAa,MAAM,+BAA+B,CAAC;AAC1D,OAAO,sBAAsB,MAAM,6CAA6C,CAAC;AACjF,OAAO,iCAAiC,MAAM,wCAAwC,CAAC;AACvF,OAAO,6BAA6B,MAAM,oCAAoC,CAAC;AAE/E;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,uBAAwB,SAAQ,iCAAgD;IAC3F,MAAM,CAAC,iBAAiB,CAA2B;IAE3D;;OAEG;IACH;QACE,KAAK,CAAC,qBAAqB,EAAE,IAAI,sBAAsB,EAAE,EAAE,CAAC,IAA4B,EAAE,EAAE;YAC1F,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC3C,OAAO,OAAO,CAAC,WAAW,CAAC;YAC3B,OAAO,CAAC,eAAe,GAAG,IAAI,IAAI,EAAE,CAAC;YACrC,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,uBAAuB;QAC5B,MAAM,QAAQ,GAAG,uBAAuB,CAAC,OAAO,EAAE,CAAC;QACnD,OAAO;YACL,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;gBAChC,MAAM,
|
|
1
|
+
{"version":3,"file":"DashboardTaskRepository.js","sourceRoot":"","sources":["../../../src/repositories/dashboard/DashboardTaskRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,53 +37,10 @@ export default class DashboardTaskRepository extends DashboardBaseWithUserIdRepo
|
|
|
37
37
|
const taskRepo = DashboardTaskRepository.getRepo();
|
|
38
38
|
return {
|
|
39
39
|
deleteOne: async (userId, meta) => {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
// Get all tasks owned by the user to report sharedWith users
|
|
43
|
-
if (meta) {
|
|
44
|
-
const tasksOwnedByUser = await taskCollection
|
|
45
|
-
.find({ userId, docType: DashboardTask_docType })
|
|
46
|
-
.toArray();
|
|
47
|
-
tasksOwnedByUser.forEach((task) => {
|
|
48
|
-
meta.addAffectedUserIds(task.sharedWith);
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
// Remove all tasks for the user
|
|
53
|
-
await taskCollection.deleteMany({ userId, docType: DashboardTask_docType });
|
|
54
|
-
// Remove all assignedTo references for the user
|
|
55
|
-
await taskCollection.updateMany(
|
|
56
|
-
{ assignedTo: userId, docType: DashboardTask_docType },
|
|
57
|
-
{ $set: { assignedTo: undefined } }
|
|
58
|
-
);
|
|
59
|
-
meta?.recordDocTypeTouched(DashboardTask_docType);
|
|
60
|
-
meta?.addAffectedUserIds([userId]);
|
|
40
|
+
await taskRepo.deleteAllForUserWithCleanup(userId, meta);
|
|
61
41
|
},
|
|
62
42
|
deleteList: async (userIds, meta) => {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
// Get all tasks owned by the users to report sharedWith users
|
|
66
|
-
if (meta) {
|
|
67
|
-
const tasksOwnedByUsers = await taskCollection
|
|
68
|
-
.find({ userId: { $in: userIds }, docType: DashboardTask_docType })
|
|
69
|
-
.toArray();
|
|
70
|
-
tasksOwnedByUsers.forEach((task) => {
|
|
71
|
-
meta.addAffectedUserIds(task.sharedWith);
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
// Remove all tasks for the users
|
|
76
|
-
await taskCollection.deleteMany({
|
|
77
|
-
userId: { $in: userIds },
|
|
78
|
-
docType: DashboardTask_docType
|
|
79
|
-
});
|
|
80
|
-
// Remove all assignedTo references for the users
|
|
81
|
-
await taskCollection.updateMany(
|
|
82
|
-
{ assignedTo: { $in: userIds }, docType: DashboardTask_docType },
|
|
83
|
-
{ $set: { assignedTo: undefined } }
|
|
84
|
-
);
|
|
85
|
-
meta?.recordDocTypeTouched(DashboardTask_docType);
|
|
86
|
-
meta?.addAffectedUserIds(userIds);
|
|
43
|
+
await taskRepo.deleteAllForUsersWithCleanup(userIds, meta);
|
|
87
44
|
}
|
|
88
45
|
};
|
|
89
46
|
}
|
|
@@ -246,4 +203,43 @@ export default class DashboardTaskRepository extends DashboardBaseWithUserIdRepo
|
|
|
246
203
|
const childrenIds = DashboardTaskService.getChildrenIds(allUserTasks, taskIds);
|
|
247
204
|
return [...taskIds, ...childrenIds];
|
|
248
205
|
}
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* Deletes all tasks for a user and cleans up assignedTo references.
|
|
209
|
+
*
|
|
210
|
+
* @param userId - The user ID to delete tasks for.
|
|
211
|
+
* @param meta - Tracks database operation metadata for a single request.
|
|
212
|
+
*/
|
|
213
|
+
async deleteAllForUserWithCleanup(userId: UUID, meta?: DbOperationMetaData): Promise<void> {
|
|
214
|
+
await this.deleteAllForUsersWithCleanup([userId], meta);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* Deletes all tasks for users and cleans up assignedTo references.
|
|
219
|
+
*
|
|
220
|
+
* @param userIds - The user IDs to delete tasks for.
|
|
221
|
+
* @param meta - Tracks database operation metadata for a single request.
|
|
222
|
+
*/
|
|
223
|
+
async deleteAllForUsersWithCleanup(userIds: UUID[], meta?: DbOperationMetaData): Promise<void> {
|
|
224
|
+
const taskCollection = await this.getCollection();
|
|
225
|
+
|
|
226
|
+
// Get all tasks owned by the users to report sharedWith users
|
|
227
|
+
if (meta) {
|
|
228
|
+
const tasksOwnedByUsers = await taskCollection
|
|
229
|
+
.find({ userId: { $in: userIds }, docType: DashboardTask_docType })
|
|
230
|
+
.toArray();
|
|
231
|
+
tasksOwnedByUsers.forEach((task) => {
|
|
232
|
+
meta.addAffectedUserIds(task.sharedWith);
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
// Delete all tasks for the users
|
|
237
|
+
await this.deleteAllForUsers(userIds, meta);
|
|
238
|
+
|
|
239
|
+
// Remove all assignedTo references for the users
|
|
240
|
+
await taskCollection.updateMany(
|
|
241
|
+
{ assignedTo: { $in: userIds }, docType: DashboardTask_docType },
|
|
242
|
+
{ $set: { assignedTo: undefined } }
|
|
243
|
+
);
|
|
244
|
+
}
|
|
249
245
|
}
|
|
@@ -83,5 +83,19 @@ export default class DashboardUserConfigRepository extends DashboardBaseWithUser
|
|
|
83
83
|
* @param docSets The array of document sets containing original and updated documents.
|
|
84
84
|
*/
|
|
85
85
|
private updateCollaboratorsIfNeeded;
|
|
86
|
+
/**
|
|
87
|
+
* Deletes a user config and removes the user from collaborators lists.
|
|
88
|
+
*
|
|
89
|
+
* @param userId - The user ID to delete config for.
|
|
90
|
+
* @param meta - Tracks database operation metadata for a single request.
|
|
91
|
+
*/
|
|
92
|
+
deleteConfigAndCleanupCollaborators(userId: UUID, meta?: DbOperationMetaData): Promise<void>;
|
|
93
|
+
/**
|
|
94
|
+
* Deletes user configs and removes the users from collaborators lists.
|
|
95
|
+
*
|
|
96
|
+
* @param userIds - The user IDs to delete configs for.
|
|
97
|
+
* @param meta - Tracks database operation metadata for a single request.
|
|
98
|
+
*/
|
|
99
|
+
deleteConfigsAndCleanupCollaborators(userIds: UUID[], meta?: DbOperationMetaData): Promise<void>;
|
|
86
100
|
}
|
|
87
101
|
//# sourceMappingURL=DashboardUserConfigRepository.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DashboardUserConfigRepository.d.ts","sourceRoot":"","sources":["../../../src/repositories/dashboard/DashboardUserConfigRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAE1E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,KAAK,EAAyB,eAAe,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAC/E,OAAO,KAAK,mBAAmB,MAAM,mCAAmC,CAAC;AAGzE,OAAO,iCAAiC,MAAM,wCAAwC,CAAC;AAEvF;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,6BAA8B,SAAQ,iCAAiC,CAAC,mBAAmB,CAAC;IAC/G,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAgC;IAEjE;;OAEG;IACH,OAAO;IAIP;;;;OAIG;IACH,MAAM,CAAC,uBAAuB,IAAI,aAAa,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"DashboardUserConfigRepository.d.ts","sourceRoot":"","sources":["../../../src/repositories/dashboard/DashboardUserConfigRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAE1E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,KAAK,EAAyB,eAAe,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAC/E,OAAO,KAAK,mBAAmB,MAAM,mCAAmC,CAAC;AAGzE,OAAO,iCAAiC,MAAM,wCAAwC,CAAC;AAEvF;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,6BAA8B,SAAQ,iCAAiC,CAAC,mBAAmB,CAAC;IAC/G,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAgC;IAEjE;;OAEG;IACH,OAAO;IAIP;;;;OAIG;IACH,MAAM,CAAC,uBAAuB,IAAI,aAAa,CAAC,IAAI,CAAC;IA2BrD,SAAS,CAAC,gBAAgB,IAAI,IAAI;IAElC;;;;OAIG;WACW,OAAO,IAAI,6BAA6B;IAOtD;;;;;;;OAOG;IACY,SAAS,CACtB,MAAM,EAAE,mBAAmB,EAC3B,IAAI,CAAC,EAAE,mBAAmB,GACzB,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAatC;;;;;;;;OAQG;IACY,UAAU,CACvB,OAAO,EAAE,mBAAmB,EAAE,EAC9B,IAAI,CAAC,EAAE,mBAAmB,GACzB,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAYjC;;;;;;;OAOG;IACY,MAAM,CACnB,UAAU,EAAE,OAAO,CAAC,mBAAmB,CAAC,EACxC,IAAI,CAAC,EAAE,mBAAmB,GACzB,OAAO,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;IAU7C;;;;;;;OAOG;IACY,UAAU,CACvB,WAAW,EAAE,OAAO,CAAC,mBAAmB,CAAC,EAAE,EAC3C,IAAI,CAAC,EAAE,mBAAmB,GACzB,OAAO,CAAC,eAAe,CAAC;IAkB3B;;;;;OAKG;IACG,UAAU,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAMnE;;;;;;;;;;;OAWG;YACW,2BAA2B;IAiDzC;;;;;OAKG;IACG,mCAAmC,CACvC,MAAM,EAAE,IAAI,EACZ,IAAI,CAAC,EAAE,mBAAmB,GACzB,OAAO,CAAC,IAAI,CAAC;IAIhB;;;;;OAKG;IACG,oCAAoC,CACxC,OAAO,EAAE,IAAI,EAAE,EACf,IAAI,CAAC,EAAE,mBAAmB,GACzB,OAAO,CAAC,IAAI,CAAC;CAajB"}
|
|
@@ -22,23 +22,10 @@ export default class DashboardUserConfigRepository extends DashboardBaseWithUser
|
|
|
22
22
|
const userConfigRepo = DashboardUserConfigRepository.getRepo();
|
|
23
23
|
return {
|
|
24
24
|
deleteOne: async (userId, meta) => {
|
|
25
|
-
|
|
26
|
-
await collection.deleteOne({ userId, docType: DashboardUserConfig_docType });
|
|
27
|
-
await collection.updateMany({ collaborators: userId, docType: DashboardUserConfig_docType }, { $pull: { collaborators: userId } });
|
|
28
|
-
meta?.recordDocTypeTouched(DashboardUserConfig_docType);
|
|
29
|
-
meta?.addAffectedUserIds([userId]);
|
|
25
|
+
await userConfigRepo.deleteConfigAndCleanupCollaborators(userId, meta);
|
|
30
26
|
},
|
|
31
27
|
deleteList: async (userIds, meta) => {
|
|
32
|
-
|
|
33
|
-
await collection.deleteMany({
|
|
34
|
-
userId: { $in: userIds },
|
|
35
|
-
docType: DashboardUserConfig_docType
|
|
36
|
-
});
|
|
37
|
-
await collection.updateMany({ collaborators: { $in: userIds }, docType: DashboardUserConfig_docType }, {
|
|
38
|
-
$pull: { collaborators: { $in: userIds } }
|
|
39
|
-
});
|
|
40
|
-
meta?.recordDocTypeTouched(DashboardUserConfig_docType);
|
|
41
|
-
meta?.addAffectedUserIds(userIds);
|
|
28
|
+
await userConfigRepo.deleteConfigsAndCleanupCollaborators(userIds, meta);
|
|
42
29
|
},
|
|
43
30
|
insertNew: async (user, meta) => {
|
|
44
31
|
if (user.projectAccess.dashboard) {
|
|
@@ -205,5 +192,29 @@ export default class DashboardUserConfigRepository extends DashboardBaseWithUser
|
|
|
205
192
|
await collection.bulkWrite(bulkOps);
|
|
206
193
|
}
|
|
207
194
|
}
|
|
195
|
+
/**
|
|
196
|
+
* Deletes a user config and removes the user from collaborators lists.
|
|
197
|
+
*
|
|
198
|
+
* @param userId - The user ID to delete config for.
|
|
199
|
+
* @param meta - Tracks database operation metadata for a single request.
|
|
200
|
+
*/
|
|
201
|
+
async deleteConfigAndCleanupCollaborators(userId, meta) {
|
|
202
|
+
await this.deleteConfigsAndCleanupCollaborators([userId], meta);
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Deletes user configs and removes the users from collaborators lists.
|
|
206
|
+
*
|
|
207
|
+
* @param userIds - The user IDs to delete configs for.
|
|
208
|
+
* @param meta - Tracks database operation metadata for a single request.
|
|
209
|
+
*/
|
|
210
|
+
async deleteConfigsAndCleanupCollaborators(userIds, meta) {
|
|
211
|
+
const collection = await this.getCollection();
|
|
212
|
+
await Promise.all([
|
|
213
|
+
// Delete the configs
|
|
214
|
+
this.deleteAllForUsers(userIds, meta),
|
|
215
|
+
// Remove users from collaborators lists
|
|
216
|
+
collection.updateMany({ collaborators: { $in: userIds }, docType: DashboardUserConfig_docType }, { $pull: { collaborators: { $in: userIds } } })
|
|
217
|
+
]);
|
|
218
|
+
}
|
|
208
219
|
}
|
|
209
220
|
//# sourceMappingURL=DashboardUserConfigRepository.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DashboardUserConfigRepository.js","sourceRoot":"","sources":["../../../src/repositories/dashboard/DashboardUserConfigRepository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAKlG,OAAO,aAAa,MAAM,+BAA+B,CAAC;AAC1D,OAAO,4BAA4B,MAAM,mDAAmD,CAAC;AAC7F,OAAO,iCAAiC,MAAM,wCAAwC,CAAC;AAEvF;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,6BAA8B,SAAQ,iCAAsD;IACvG,MAAM,CAAC,iBAAiB,CAAiC;IAEjE;;OAEG;IACH;QACE,KAAK,CAAC,2BAA2B,EAAE,IAAI,4BAA4B,EAAE,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC/F,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,uBAAuB;QAC5B,MAAM,cAAc,GAAG,6BAA6B,CAAC,OAAO,EAAE,CAAC;QAC/D,OAAO;YACL,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;gBAChC,MAAM,
|
|
1
|
+
{"version":3,"file":"DashboardUserConfigRepository.js","sourceRoot":"","sources":["../../../src/repositories/dashboard/DashboardUserConfigRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,29 +30,10 @@ export default class DashboardUserConfigRepository extends DashboardBaseWithUser
|
|
|
30
30
|
const userConfigRepo = DashboardUserConfigRepository.getRepo();
|
|
31
31
|
return {
|
|
32
32
|
deleteOne: async (userId, meta) => {
|
|
33
|
-
|
|
34
|
-
await collection.deleteOne({ userId, docType: DashboardUserConfig_docType });
|
|
35
|
-
await collection.updateMany(
|
|
36
|
-
{ collaborators: userId, docType: DashboardUserConfig_docType },
|
|
37
|
-
{ $pull: { collaborators: userId } }
|
|
38
|
-
);
|
|
39
|
-
meta?.recordDocTypeTouched(DashboardUserConfig_docType);
|
|
40
|
-
meta?.addAffectedUserIds([userId]);
|
|
33
|
+
await userConfigRepo.deleteConfigAndCleanupCollaborators(userId, meta);
|
|
41
34
|
},
|
|
42
35
|
deleteList: async (userIds, meta) => {
|
|
43
|
-
|
|
44
|
-
await collection.deleteMany({
|
|
45
|
-
userId: { $in: userIds },
|
|
46
|
-
docType: DashboardUserConfig_docType
|
|
47
|
-
});
|
|
48
|
-
await collection.updateMany(
|
|
49
|
-
{ collaborators: { $in: userIds }, docType: DashboardUserConfig_docType },
|
|
50
|
-
{
|
|
51
|
-
$pull: { collaborators: { $in: userIds } }
|
|
52
|
-
}
|
|
53
|
-
);
|
|
54
|
-
meta?.recordDocTypeTouched(DashboardUserConfig_docType);
|
|
55
|
-
meta?.addAffectedUserIds(userIds);
|
|
36
|
+
await userConfigRepo.deleteConfigsAndCleanupCollaborators(userIds, meta);
|
|
56
37
|
},
|
|
57
38
|
insertNew: async (user, meta) => {
|
|
58
39
|
if (user.projectAccess.dashboard) {
|
|
@@ -256,4 +237,40 @@ export default class DashboardUserConfigRepository extends DashboardBaseWithUser
|
|
|
256
237
|
await collection.bulkWrite(bulkOps);
|
|
257
238
|
}
|
|
258
239
|
}
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* Deletes a user config and removes the user from collaborators lists.
|
|
243
|
+
*
|
|
244
|
+
* @param userId - The user ID to delete config for.
|
|
245
|
+
* @param meta - Tracks database operation metadata for a single request.
|
|
246
|
+
*/
|
|
247
|
+
async deleteConfigAndCleanupCollaborators(
|
|
248
|
+
userId: UUID,
|
|
249
|
+
meta?: DbOperationMetaData
|
|
250
|
+
): Promise<void> {
|
|
251
|
+
await this.deleteConfigsAndCleanupCollaborators([userId], meta);
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
/**
|
|
255
|
+
* Deletes user configs and removes the users from collaborators lists.
|
|
256
|
+
*
|
|
257
|
+
* @param userIds - The user IDs to delete configs for.
|
|
258
|
+
* @param meta - Tracks database operation metadata for a single request.
|
|
259
|
+
*/
|
|
260
|
+
async deleteConfigsAndCleanupCollaborators(
|
|
261
|
+
userIds: UUID[],
|
|
262
|
+
meta?: DbOperationMetaData
|
|
263
|
+
): Promise<void> {
|
|
264
|
+
const collection = await this.getCollection();
|
|
265
|
+
|
|
266
|
+
await Promise.all([
|
|
267
|
+
// Delete the configs
|
|
268
|
+
this.deleteAllForUsers(userIds, meta),
|
|
269
|
+
// Remove users from collaborators lists
|
|
270
|
+
collection.updateMany(
|
|
271
|
+
{ collaborators: { $in: userIds }, docType: DashboardUserConfig_docType },
|
|
272
|
+
{ $pull: { collaborators: { $in: userIds } } }
|
|
273
|
+
)
|
|
274
|
+
]);
|
|
275
|
+
}
|
|
259
276
|
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { BaseDocumentWithType, BaseDocumentWithUpdatedAndCreatedDates } from '@aneuhold/core-ts-db-lib';
|
|
2
|
+
import type { UUID } from 'crypto';
|
|
3
|
+
import type { BulkWriteResult, DeleteResult, UpdateResult } from 'mongodb';
|
|
4
|
+
import type DbOperationMetaData from '../../util/DbOperationMetaData.js';
|
|
5
|
+
import type IValidator from '../../validators/BaseValidator.js';
|
|
6
|
+
import BaseRepository from '../BaseRepository.js';
|
|
7
|
+
/**
|
|
8
|
+
* A base repository for the `workout` collection.
|
|
9
|
+
*/
|
|
10
|
+
export default abstract class WorkoutBaseRepository<TBaseType extends BaseDocumentWithType & BaseDocumentWithUpdatedAndCreatedDates> extends BaseRepository<TBaseType> {
|
|
11
|
+
protected docType: string;
|
|
12
|
+
private static COLLECTION_NAME;
|
|
13
|
+
constructor(docType: string, validator: IValidator<TBaseType>, updateCleaner?: (doc: Partial<TBaseType>) => Partial<TBaseType>);
|
|
14
|
+
insertNew(newDoc: TBaseType, meta?: DbOperationMetaData): Promise<TBaseType | null>;
|
|
15
|
+
insertMany(newDocs: TBaseType[], meta?: DbOperationMetaData): Promise<TBaseType[]>;
|
|
16
|
+
update(updatedDoc: Partial<TBaseType>, meta?: DbOperationMetaData): Promise<UpdateResult>;
|
|
17
|
+
updateMany(updatedDocs: Partial<TBaseType>[], meta?: DbOperationMetaData): Promise<BulkWriteResult>;
|
|
18
|
+
delete(docId: UUID, meta?: DbOperationMetaData): Promise<DeleteResult>;
|
|
19
|
+
deleteList(docIds: UUID[], meta?: DbOperationMetaData): Promise<DeleteResult>;
|
|
20
|
+
deleteAll(meta?: DbOperationMetaData): Promise<DeleteResult>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=WorkoutBaseRepository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkoutBaseRepository.d.ts","sourceRoot":"","sources":["../../../src/repositories/workout/WorkoutBaseRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,sCAAsC,EACvC,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC3E,OAAO,KAAK,mBAAmB,MAAM,mCAAmC,CAAC;AAEzE,OAAO,KAAK,UAAU,MAAM,mCAAmC,CAAC;AAChE,OAAO,cAAc,MAAM,sBAAsB,CAAC;AAElD;;GAEG;AACH,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,qBAAqB,CACjD,SAAS,SAAS,oBAAoB,GAAG,sCAAsC,CAC/E,SAAQ,cAAc,CAAC,SAAS,CAAC;IAI/B,SAAS,CAAC,OAAO,EAAE,MAAM;IAH3B,OAAO,CAAC,MAAM,CAAC,eAAe,CAAa;gBAG/B,OAAO,EAAE,MAAM,EACzB,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,EAChC,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC,KAAK,OAAO,CAAC,SAAS,CAAC;IAYlD,SAAS,CACtB,MAAM,EAAE,SAAS,EACjB,IAAI,CAAC,EAAE,mBAAmB,GACzB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAKb,UAAU,CACvB,OAAO,EAAE,SAAS,EAAE,EACpB,IAAI,CAAC,EAAE,mBAAmB,GACzB,OAAO,CAAC,SAAS,EAAE,CAAC;IAKR,MAAM,CACnB,UAAU,EAAE,OAAO,CAAC,SAAS,CAAC,EAC9B,IAAI,CAAC,EAAE,mBAAmB,GACzB,OAAO,CAAC,YAAY,CAAC;IAMT,UAAU,CACvB,WAAW,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,EACjC,IAAI,CAAC,EAAE,mBAAmB,GACzB,OAAO,CAAC,eAAe,CAAC;IAQZ,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAC;IAKtE,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAC;IAK7E,SAAS,CAAC,IAAI,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAC;CAI5E"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import CleanDocument from '../../util/DocumentCleaner.js';
|
|
2
|
+
import BaseRepository from '../BaseRepository.js';
|
|
3
|
+
/**
|
|
4
|
+
* A base repository for the `workout` collection.
|
|
5
|
+
*/
|
|
6
|
+
export default class WorkoutBaseRepository extends BaseRepository {
|
|
7
|
+
docType;
|
|
8
|
+
static COLLECTION_NAME = 'workout';
|
|
9
|
+
constructor(docType, validator, updateCleaner) {
|
|
10
|
+
const defaultUpdateCleaner = (doc) => {
|
|
11
|
+
updateCleaner?.(doc);
|
|
12
|
+
CleanDocument.docType(doc);
|
|
13
|
+
CleanDocument.createdDate(doc);
|
|
14
|
+
return doc;
|
|
15
|
+
};
|
|
16
|
+
const defaultFilter = { docType };
|
|
17
|
+
super(WorkoutBaseRepository.COLLECTION_NAME, validator, defaultFilter, defaultUpdateCleaner);
|
|
18
|
+
this.docType = docType;
|
|
19
|
+
}
|
|
20
|
+
async insertNew(newDoc, meta) {
|
|
21
|
+
meta?.recordDocTypeTouched(this.docType);
|
|
22
|
+
return super.insertNew(newDoc, meta);
|
|
23
|
+
}
|
|
24
|
+
async insertMany(newDocs, meta) {
|
|
25
|
+
meta?.recordDocTypeTouched(this.docType);
|
|
26
|
+
return super.insertMany(newDocs, meta);
|
|
27
|
+
}
|
|
28
|
+
async update(updatedDoc, meta) {
|
|
29
|
+
meta?.recordDocTypeTouched(this.docType);
|
|
30
|
+
updatedDoc.lastUpdatedDate = new Date();
|
|
31
|
+
return super.update(updatedDoc, meta);
|
|
32
|
+
}
|
|
33
|
+
async updateMany(updatedDocs, meta) {
|
|
34
|
+
meta?.recordDocTypeTouched(this.docType);
|
|
35
|
+
updatedDocs.forEach((doc) => {
|
|
36
|
+
doc.lastUpdatedDate = new Date();
|
|
37
|
+
});
|
|
38
|
+
return super.updateMany(updatedDocs, meta);
|
|
39
|
+
}
|
|
40
|
+
async delete(docId, meta) {
|
|
41
|
+
meta?.recordDocTypeTouched(this.docType);
|
|
42
|
+
return super.delete(docId, meta);
|
|
43
|
+
}
|
|
44
|
+
async deleteList(docIds, meta) {
|
|
45
|
+
meta?.recordDocTypeTouched(this.docType);
|
|
46
|
+
return super.deleteList(docIds, meta);
|
|
47
|
+
}
|
|
48
|
+
async deleteAll(meta) {
|
|
49
|
+
meta?.recordDocTypeTouched(this.docType);
|
|
50
|
+
return super.deleteAll();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=WorkoutBaseRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkoutBaseRepository.js","sourceRoot":"","sources":["../../../src/repositories/workout/WorkoutBaseRepository.ts"],"names":[],"mappings":"AAOA,OAAO,aAAa,MAAM,+BAA+B,CAAC;AAE1D,OAAO,cAAc,MAAM,sBAAsB,CAAC;AAElD;;GAEG;AACH,MAAM,CAAC,OAAO,OAAgB,qBAE5B,SAAQ,cAAyB;IAIrB;IAHJ,MAAM,CAAC,eAAe,GAAG,SAAS,CAAC;IAE3C,YACY,OAAe,EACzB,SAAgC,EAChC,aAA+D;QAE/D,MAAM,oBAAoB,GAAG,CAAC,GAAuB,EAAE,EAAE;YACvD,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC;YACrB,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC3B,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAC/B,OAAO,GAAG,CAAC;QACb,CAAC,CAAC;QACF,MAAM,aAAa,GAAG,EAAE,OAAO,EAAwB,CAAC;QACxD,KAAK,CAAC,qBAAqB,CAAC,eAAe,EAAE,SAAS,EAAE,aAAa,EAAE,oBAAoB,CAAC,CAAC;QAXnF,YAAO,GAAP,OAAO,CAAQ;IAY3B,CAAC;IAEQ,KAAK,CAAC,SAAS,CACtB,MAAiB,EACjB,IAA0B;QAE1B,IAAI,EAAE,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzC,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;IAEQ,KAAK,CAAC,UAAU,CACvB,OAAoB,EACpB,IAA0B;QAE1B,IAAI,EAAE,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzC,OAAO,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;IAEQ,KAAK,CAAC,MAAM,CACnB,UAA8B,EAC9B,IAA0B;QAE1B,IAAI,EAAE,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzC,UAAU,CAAC,eAAe,GAAG,IAAI,IAAI,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;IAEQ,KAAK,CAAC,UAAU,CACvB,WAAiC,EACjC,IAA0B;QAE1B,IAAI,EAAE,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzC,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAC1B,GAAG,CAAC,eAAe,GAAG,IAAI,IAAI,EAAE,CAAC;QACnC,CAAC,CAAC,CAAC;QACH,OAAO,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IAEQ,KAAK,CAAC,MAAM,CAAC,KAAW,EAAE,IAA0B;QAC3D,IAAI,EAAE,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzC,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAEQ,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,IAA0B;QAClE,IAAI,EAAE,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzC,OAAO,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;IAEQ,KAAK,CAAC,SAAS,CAAC,IAA0B;QACjD,IAAI,EAAE,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzC,OAAO,KAAK,CAAC,SAAS,EAAE,CAAC;IAC3B,CAAC"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
BaseDocumentWithType,
|
|
3
|
+
BaseDocumentWithUpdatedAndCreatedDates
|
|
4
|
+
} from '@aneuhold/core-ts-db-lib';
|
|
5
|
+
import type { UUID } from 'crypto';
|
|
6
|
+
import type { BulkWriteResult, DeleteResult, UpdateResult } from 'mongodb';
|
|
7
|
+
import type DbOperationMetaData from '../../util/DbOperationMetaData.js';
|
|
8
|
+
import CleanDocument from '../../util/DocumentCleaner.js';
|
|
9
|
+
import type IValidator from '../../validators/BaseValidator.js';
|
|
10
|
+
import BaseRepository from '../BaseRepository.js';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* A base repository for the `workout` collection.
|
|
14
|
+
*/
|
|
15
|
+
export default abstract class WorkoutBaseRepository<
|
|
16
|
+
TBaseType extends BaseDocumentWithType & BaseDocumentWithUpdatedAndCreatedDates
|
|
17
|
+
> extends BaseRepository<TBaseType> {
|
|
18
|
+
private static COLLECTION_NAME = 'workout';
|
|
19
|
+
|
|
20
|
+
constructor(
|
|
21
|
+
protected docType: string,
|
|
22
|
+
validator: IValidator<TBaseType>,
|
|
23
|
+
updateCleaner?: (doc: Partial<TBaseType>) => Partial<TBaseType>
|
|
24
|
+
) {
|
|
25
|
+
const defaultUpdateCleaner = (doc: Partial<TBaseType>) => {
|
|
26
|
+
updateCleaner?.(doc);
|
|
27
|
+
CleanDocument.docType(doc);
|
|
28
|
+
CleanDocument.createdDate(doc);
|
|
29
|
+
return doc;
|
|
30
|
+
};
|
|
31
|
+
const defaultFilter = { docType } as Partial<TBaseType>;
|
|
32
|
+
super(WorkoutBaseRepository.COLLECTION_NAME, validator, defaultFilter, defaultUpdateCleaner);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
override async insertNew(
|
|
36
|
+
newDoc: TBaseType,
|
|
37
|
+
meta?: DbOperationMetaData
|
|
38
|
+
): Promise<TBaseType | null> {
|
|
39
|
+
meta?.recordDocTypeTouched(this.docType);
|
|
40
|
+
return super.insertNew(newDoc, meta);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
override async insertMany(
|
|
44
|
+
newDocs: TBaseType[],
|
|
45
|
+
meta?: DbOperationMetaData
|
|
46
|
+
): Promise<TBaseType[]> {
|
|
47
|
+
meta?.recordDocTypeTouched(this.docType);
|
|
48
|
+
return super.insertMany(newDocs, meta);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
override async update(
|
|
52
|
+
updatedDoc: Partial<TBaseType>,
|
|
53
|
+
meta?: DbOperationMetaData
|
|
54
|
+
): Promise<UpdateResult> {
|
|
55
|
+
meta?.recordDocTypeTouched(this.docType);
|
|
56
|
+
updatedDoc.lastUpdatedDate = new Date();
|
|
57
|
+
return super.update(updatedDoc, meta);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
override async updateMany(
|
|
61
|
+
updatedDocs: Partial<TBaseType>[],
|
|
62
|
+
meta?: DbOperationMetaData
|
|
63
|
+
): Promise<BulkWriteResult> {
|
|
64
|
+
meta?.recordDocTypeTouched(this.docType);
|
|
65
|
+
updatedDocs.forEach((doc) => {
|
|
66
|
+
doc.lastUpdatedDate = new Date();
|
|
67
|
+
});
|
|
68
|
+
return super.updateMany(updatedDocs, meta);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
override async delete(docId: UUID, meta?: DbOperationMetaData): Promise<DeleteResult> {
|
|
72
|
+
meta?.recordDocTypeTouched(this.docType);
|
|
73
|
+
return super.delete(docId, meta);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
override async deleteList(docIds: UUID[], meta?: DbOperationMetaData): Promise<DeleteResult> {
|
|
77
|
+
meta?.recordDocTypeTouched(this.docType);
|
|
78
|
+
return super.deleteList(docIds, meta);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
override async deleteAll(meta?: DbOperationMetaData): Promise<DeleteResult> {
|
|
82
|
+
meta?.recordDocTypeTouched(this.docType);
|
|
83
|
+
return super.deleteAll();
|
|
84
|
+
}
|
|
85
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { BaseDocumentWithType, BaseDocumentWithUpdatedAndCreatedDates, RequiredUserId } from '@aneuhold/core-ts-db-lib';
|
|
2
|
+
import type { UUID } from 'crypto';
|
|
3
|
+
import type { BulkWriteResult, DeleteResult, UpdateResult } from 'mongodb';
|
|
4
|
+
import type DbOperationMetaData from '../../util/DbOperationMetaData.js';
|
|
5
|
+
import type IValidator from '../../validators/BaseValidator.js';
|
|
6
|
+
import WorkoutBaseRepository from './WorkoutBaseRepository.js';
|
|
7
|
+
/**
|
|
8
|
+
* A base repository for the `workout` collection that requires a `userId`.
|
|
9
|
+
*/
|
|
10
|
+
export default abstract class WorkoutBaseWithUserIdRepository<TBaseType extends BaseDocumentWithType & BaseDocumentWithUpdatedAndCreatedDates & RequiredUserId> extends WorkoutBaseRepository<TBaseType> {
|
|
11
|
+
constructor(docType: string, validator: IValidator<TBaseType>, updateCleaner?: (doc: Partial<TBaseType>) => Partial<TBaseType>);
|
|
12
|
+
/**
|
|
13
|
+
* Gets all items for a given user.
|
|
14
|
+
*
|
|
15
|
+
* @param userId - The user ID to get items for.
|
|
16
|
+
*/
|
|
17
|
+
getAllForUser(userId: UUID): Promise<TBaseType[]>;
|
|
18
|
+
getAllForUsers(userIds: UUID[]): Promise<TBaseType[]>;
|
|
19
|
+
insertNew(newDoc: TBaseType, meta?: DbOperationMetaData): Promise<TBaseType | null>;
|
|
20
|
+
insertMany(newDocs: TBaseType[], meta?: DbOperationMetaData): Promise<TBaseType[]>;
|
|
21
|
+
update(updatedDoc: Partial<TBaseType>, meta?: DbOperationMetaData): Promise<UpdateResult>;
|
|
22
|
+
updateMany(updatedDocs: Partial<TBaseType>[], meta?: DbOperationMetaData): Promise<BulkWriteResult>;
|
|
23
|
+
delete(docId: UUID, meta?: DbOperationMetaData): Promise<DeleteResult>;
|
|
24
|
+
deleteList(docIds: UUID[], meta?: DbOperationMetaData): Promise<DeleteResult>;
|
|
25
|
+
/**
|
|
26
|
+
* Deletes all documents for a specific user.
|
|
27
|
+
*
|
|
28
|
+
* @param userId - The user ID to delete documents for.
|
|
29
|
+
* @param meta - Tracks database operation metadata for a single request.
|
|
30
|
+
*/
|
|
31
|
+
deleteAllForUser(userId: UUID, meta?: DbOperationMetaData): Promise<DeleteResult>;
|
|
32
|
+
/**
|
|
33
|
+
* Deletes all documents for specific users.
|
|
34
|
+
*
|
|
35
|
+
* @param userIds - The user IDs to delete documents for.
|
|
36
|
+
* @param meta - Tracks database operation metadata for a single request.
|
|
37
|
+
*/
|
|
38
|
+
deleteAllForUsers(userIds: UUID[], meta?: DbOperationMetaData): Promise<DeleteResult>;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=WorkoutBaseWithUserIdRepository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkoutBaseWithUserIdRepository.d.ts","sourceRoot":"","sources":["../../../src/repositories/workout/WorkoutBaseWithUserIdRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,sCAAsC,EACtC,cAAc,EACf,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAU,YAAY,EAAE,MAAM,SAAS,CAAC;AACnF,OAAO,KAAK,mBAAmB,MAAM,mCAAmC,CAAC;AAEzE,OAAO,KAAK,UAAU,MAAM,mCAAmC,CAAC;AAChE,OAAO,qBAAqB,MAAM,4BAA4B,CAAC;AAE/D;;GAEG;AACH,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,+BAA+B,CAC3D,SAAS,SAAS,oBAAoB,GAAG,sCAAsC,GAAG,cAAc,CAChG,SAAQ,qBAAqB,CAAC,SAAS,CAAC;gBAEtC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,EAChC,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC,KAAK,OAAO,CAAC,SAAS,CAAC;IAOjE;;;;OAIG;IACG,aAAa,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAIjD,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAO5C,SAAS,CACtB,MAAM,EAAE,SAAS,EACjB,IAAI,CAAC,EAAE,mBAAmB,GACzB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAQb,UAAU,CACvB,OAAO,EAAE,SAAS,EAAE,EACpB,IAAI,CAAC,EAAE,mBAAmB,GACzB,OAAO,CAAC,SAAS,EAAE,CAAC;IAMR,MAAM,CACnB,UAAU,EAAE,OAAO,CAAC,SAAS,CAAC,EAC9B,IAAI,CAAC,EAAE,mBAAmB,GACzB,OAAO,CAAC,YAAY,CAAC;IAUT,UAAU,CACvB,WAAW,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,EACjC,IAAI,CAAC,EAAE,mBAAmB,GACzB,OAAO,CAAC,eAAe,CAAC;IASZ,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAC;IAUtE,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAC;IAQ5F;;;;;OAKG;IACG,gBAAgB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAC;IAIvF;;;;;OAKG;IACG,iBAAiB,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAC;CAU5F"}
|