@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.
Files changed (161) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +1 -0
  3. package/lib/repositories/BaseRepository.d.ts +8 -1
  4. package/lib/repositories/BaseRepository.d.ts.map +1 -1
  5. package/lib/repositories/BaseRepository.js +13 -1
  6. package/lib/repositories/BaseRepository.js.map +1 -1
  7. package/lib/repositories/BaseRepository.ts +14 -1
  8. package/lib/repositories/common/UserRepository.d.ts.map +1 -1
  9. package/lib/repositories/common/UserRepository.js +12 -0
  10. package/lib/repositories/common/UserRepository.js.map +1 -1
  11. package/lib/repositories/common/UserRepository.ts +12 -0
  12. package/lib/repositories/dashboard/DashboardBaseWithUserIdRepository.d.ts +20 -0
  13. package/lib/repositories/dashboard/DashboardBaseWithUserIdRepository.d.ts.map +1 -1
  14. package/lib/repositories/dashboard/DashboardBaseWithUserIdRepository.js +36 -4
  15. package/lib/repositories/dashboard/DashboardBaseWithUserIdRepository.js.map +1 -1
  16. package/lib/repositories/dashboard/DashboardBaseWithUserIdRepository.ts +39 -4
  17. package/lib/repositories/dashboard/DashboardNonogramKatanaItemRepository.d.ts.map +1 -1
  18. package/lib/repositories/dashboard/DashboardNonogramKatanaItemRepository.js +2 -12
  19. package/lib/repositories/dashboard/DashboardNonogramKatanaItemRepository.js.map +1 -1
  20. package/lib/repositories/dashboard/DashboardNonogramKatanaItemRepository.ts +2 -16
  21. package/lib/repositories/dashboard/DashboardNonogramKatanaUpgradeRepository.d.ts.map +1 -1
  22. package/lib/repositories/dashboard/DashboardNonogramKatanaUpgradeRepository.js +2 -12
  23. package/lib/repositories/dashboard/DashboardNonogramKatanaUpgradeRepository.js.map +1 -1
  24. package/lib/repositories/dashboard/DashboardNonogramKatanaUpgradeRepository.ts +2 -16
  25. package/lib/repositories/dashboard/DashboardTaskRepository.d.ts +14 -0
  26. package/lib/repositories/dashboard/DashboardTaskRepository.d.ts.map +1 -1
  27. package/lib/repositories/dashboard/DashboardTaskRepository.js +33 -35
  28. package/lib/repositories/dashboard/DashboardTaskRepository.js.map +1 -1
  29. package/lib/repositories/dashboard/DashboardTaskRepository.ts +41 -45
  30. package/lib/repositories/dashboard/DashboardUserConfigRepository.d.ts +14 -0
  31. package/lib/repositories/dashboard/DashboardUserConfigRepository.d.ts.map +1 -1
  32. package/lib/repositories/dashboard/DashboardUserConfigRepository.js +26 -15
  33. package/lib/repositories/dashboard/DashboardUserConfigRepository.js.map +1 -1
  34. package/lib/repositories/dashboard/DashboardUserConfigRepository.ts +38 -21
  35. package/lib/repositories/workout/WorkoutBaseRepository.d.ts +22 -0
  36. package/lib/repositories/workout/WorkoutBaseRepository.d.ts.map +1 -0
  37. package/lib/repositories/workout/WorkoutBaseRepository.js +53 -0
  38. package/lib/repositories/workout/WorkoutBaseRepository.js.map +1 -0
  39. package/lib/repositories/workout/WorkoutBaseRepository.ts +85 -0
  40. package/lib/repositories/workout/WorkoutBaseWithUserIdRepository.d.ts +40 -0
  41. package/lib/repositories/workout/WorkoutBaseWithUserIdRepository.d.ts.map +1 -0
  42. package/lib/repositories/workout/WorkoutBaseWithUserIdRepository.js +96 -0
  43. package/lib/repositories/workout/WorkoutBaseWithUserIdRepository.js.map +1 -0
  44. package/lib/repositories/workout/WorkoutBaseWithUserIdRepository.ts +134 -0
  45. package/lib/repositories/workout/WorkoutEquipmentTypeRepository.d.ts +17 -0
  46. package/lib/repositories/workout/WorkoutEquipmentTypeRepository.d.ts.map +1 -0
  47. package/lib/repositories/workout/WorkoutEquipmentTypeRepository.js +34 -0
  48. package/lib/repositories/workout/WorkoutEquipmentTypeRepository.js.map +1 -0
  49. package/lib/repositories/workout/WorkoutEquipmentTypeRepository.ts +40 -0
  50. package/lib/repositories/workout/WorkoutExerciseCalibrationRepository.d.ts +31 -0
  51. package/lib/repositories/workout/WorkoutExerciseCalibrationRepository.d.ts.map +1 -0
  52. package/lib/repositories/workout/WorkoutExerciseCalibrationRepository.js +70 -0
  53. package/lib/repositories/workout/WorkoutExerciseCalibrationRepository.js.map +1 -0
  54. package/lib/repositories/workout/WorkoutExerciseCalibrationRepository.ts +84 -0
  55. package/lib/repositories/workout/WorkoutExerciseRepository.d.ts +14 -0
  56. package/lib/repositories/workout/WorkoutExerciseRepository.d.ts.map +1 -0
  57. package/lib/repositories/workout/WorkoutExerciseRepository.js +34 -0
  58. package/lib/repositories/workout/WorkoutExerciseRepository.js.map +1 -0
  59. package/lib/repositories/workout/WorkoutExerciseRepository.ts +40 -0
  60. package/lib/repositories/workout/WorkoutMesocycleRepository.d.ts +14 -0
  61. package/lib/repositories/workout/WorkoutMesocycleRepository.d.ts.map +1 -0
  62. package/lib/repositories/workout/WorkoutMesocycleRepository.js +34 -0
  63. package/lib/repositories/workout/WorkoutMesocycleRepository.js.map +1 -0
  64. package/lib/repositories/workout/WorkoutMesocycleRepository.ts +40 -0
  65. package/lib/repositories/workout/WorkoutMicrocycleRepository.d.ts +31 -0
  66. package/lib/repositories/workout/WorkoutMicrocycleRepository.d.ts.map +1 -0
  67. package/lib/repositories/workout/WorkoutMicrocycleRepository.js +72 -0
  68. package/lib/repositories/workout/WorkoutMicrocycleRepository.js.map +1 -0
  69. package/lib/repositories/workout/WorkoutMicrocycleRepository.ts +86 -0
  70. package/lib/repositories/workout/WorkoutMuscleGroupRepository.d.ts +20 -0
  71. package/lib/repositories/workout/WorkoutMuscleGroupRepository.d.ts.map +1 -0
  72. package/lib/repositories/workout/WorkoutMuscleGroupRepository.js +37 -0
  73. package/lib/repositories/workout/WorkoutMuscleGroupRepository.js.map +1 -0
  74. package/lib/repositories/workout/WorkoutMuscleGroupRepository.ts +43 -0
  75. package/lib/repositories/workout/WorkoutSessionExerciseRepository.d.ts +31 -0
  76. package/lib/repositories/workout/WorkoutSessionExerciseRepository.d.ts.map +1 -0
  77. package/lib/repositories/workout/WorkoutSessionExerciseRepository.js +72 -0
  78. package/lib/repositories/workout/WorkoutSessionExerciseRepository.js.map +1 -0
  79. package/lib/repositories/workout/WorkoutSessionExerciseRepository.ts +86 -0
  80. package/lib/repositories/workout/WorkoutSessionRepository.d.ts +31 -0
  81. package/lib/repositories/workout/WorkoutSessionRepository.d.ts.map +1 -0
  82. package/lib/repositories/workout/WorkoutSessionRepository.js +72 -0
  83. package/lib/repositories/workout/WorkoutSessionRepository.js.map +1 -0
  84. package/lib/repositories/workout/WorkoutSessionRepository.ts +86 -0
  85. package/lib/repositories/workout/WorkoutSetRepository.d.ts +31 -0
  86. package/lib/repositories/workout/WorkoutSetRepository.d.ts.map +1 -0
  87. package/lib/repositories/workout/WorkoutSetRepository.js +69 -0
  88. package/lib/repositories/workout/WorkoutSetRepository.js.map +1 -0
  89. package/lib/repositories/workout/WorkoutSetRepository.ts +89 -0
  90. package/lib/util/DbSchemaUpdater.d.ts.map +1 -1
  91. package/lib/util/DbSchemaUpdater.js +25 -0
  92. package/lib/util/DbSchemaUpdater.js.map +1 -1
  93. package/lib/util/DbSchemaUpdater.ts +27 -0
  94. package/lib/util/DocumentCleaner.d.ts +2 -1
  95. package/lib/util/DocumentCleaner.d.ts.map +1 -1
  96. package/lib/util/DocumentCleaner.js +5 -0
  97. package/lib/util/DocumentCleaner.js.map +1 -1
  98. package/lib/util/DocumentCleaner.ts +14 -1
  99. package/lib/util/globalTestVariables.d.ts +8 -0
  100. package/lib/util/globalTestVariables.d.ts.map +1 -0
  101. package/lib/util/globalTestVariables.js +8 -0
  102. package/lib/util/globalTestVariables.js.map +1 -0
  103. package/lib/{tests → util}/globalTestVariables.ts +3 -0
  104. package/lib/validators/common/UserValidator.js +1 -1
  105. package/lib/validators/common/UserValidator.js.map +1 -1
  106. package/lib/validators/common/UserValidator.ts +1 -1
  107. package/lib/validators/workout/EquipmentTypeValidator.d.ts +9 -0
  108. package/lib/validators/workout/EquipmentTypeValidator.d.ts.map +1 -0
  109. package/lib/validators/workout/EquipmentTypeValidator.js +43 -0
  110. package/lib/validators/workout/EquipmentTypeValidator.js.map +1 -0
  111. package/lib/validators/workout/EquipmentTypeValidator.ts +56 -0
  112. package/lib/validators/workout/ExerciseCalibrationValidator.d.ts +9 -0
  113. package/lib/validators/workout/ExerciseCalibrationValidator.d.ts.map +1 -0
  114. package/lib/validators/workout/ExerciseCalibrationValidator.js +65 -0
  115. package/lib/validators/workout/ExerciseCalibrationValidator.js.map +1 -0
  116. package/lib/validators/workout/ExerciseCalibrationValidator.ts +85 -0
  117. package/lib/validators/workout/ExerciseValidator.d.ts +9 -0
  118. package/lib/validators/workout/ExerciseValidator.d.ts.map +1 -0
  119. package/lib/validators/workout/ExerciseValidator.js +117 -0
  120. package/lib/validators/workout/ExerciseValidator.js.map +1 -0
  121. package/lib/validators/workout/ExerciseValidator.ts +156 -0
  122. package/lib/validators/workout/MesocycleValidator.d.ts +9 -0
  123. package/lib/validators/workout/MesocycleValidator.d.ts.map +1 -0
  124. package/lib/validators/workout/MesocycleValidator.js +56 -0
  125. package/lib/validators/workout/MesocycleValidator.js.map +1 -0
  126. package/lib/validators/workout/MesocycleValidator.ts +73 -0
  127. package/lib/validators/workout/MicrocycleValidator.d.ts +9 -0
  128. package/lib/validators/workout/MicrocycleValidator.d.ts.map +1 -0
  129. package/lib/validators/workout/MicrocycleValidator.js +73 -0
  130. package/lib/validators/workout/MicrocycleValidator.js.map +1 -0
  131. package/lib/validators/workout/MicrocycleValidator.ts +91 -0
  132. package/lib/validators/workout/MuscleGroupValidator.d.ts +9 -0
  133. package/lib/validators/workout/MuscleGroupValidator.d.ts.map +1 -0
  134. package/lib/validators/workout/MuscleGroupValidator.js +43 -0
  135. package/lib/validators/workout/MuscleGroupValidator.js.map +1 -0
  136. package/lib/validators/workout/MuscleGroupValidator.ts +53 -0
  137. package/lib/validators/workout/SessionExerciseValidator.d.ts +9 -0
  138. package/lib/validators/workout/SessionExerciseValidator.d.ts.map +1 -0
  139. package/lib/validators/workout/SessionExerciseValidator.js +94 -0
  140. package/lib/validators/workout/SessionExerciseValidator.js.map +1 -0
  141. package/lib/validators/workout/SessionExerciseValidator.ts +117 -0
  142. package/lib/validators/workout/SessionValidator.d.ts +9 -0
  143. package/lib/validators/workout/SessionValidator.d.ts.map +1 -0
  144. package/lib/validators/workout/SessionValidator.js +73 -0
  145. package/lib/validators/workout/SessionValidator.js.map +1 -0
  146. package/lib/validators/workout/SessionValidator.ts +89 -0
  147. package/lib/validators/workout/SetValidator.d.ts +9 -0
  148. package/lib/validators/workout/SetValidator.d.ts.map +1 -0
  149. package/lib/validators/workout/SetValidator.js +69 -0
  150. package/lib/validators/workout/SetValidator.js.map +1 -0
  151. package/lib/validators/workout/SetValidator.ts +88 -0
  152. package/package.json +6 -5
  153. package/lib/tests/globalTestVariables.d.ts +0 -5
  154. package/lib/tests/globalTestVariables.d.ts.map +0 -1
  155. package/lib/tests/globalTestVariables.js +0 -5
  156. package/lib/tests/globalTestVariables.js.map +0 -1
  157. package/lib/tests/testsUtil.d.ts +0 -34
  158. package/lib/tests/testsUtil.d.ts.map +0 -1
  159. package/lib/tests/testsUtil.js +0 -60
  160. package/lib/tests/testsUtil.js.map +0 -1
  161. 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
- const taskCollection = await taskRepo.getCollection();
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
- const taskCollection = await taskRepo.getCollection();
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":"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"}
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
- const taskCollection = await taskRepo.getCollection();
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
- const taskCollection = await taskRepo.getCollection();
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;IA8CrD,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;CAgD1C"}
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
- const collection = await userConfigRepo.getCollection();
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
- const collection = await userConfigRepo.getCollection();
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":"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"}
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
- const collection = await userConfigRepo.getCollection();
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
- const collection = await userConfigRepo.getCollection();
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"}