refactor standardize saved record edits

Commit
ea594ba52d5b649e453d4037aab164bd6fbe4767
Author
Marius Peter <dev@marius-peter.com>
Author date
Committer
Marius Peter <dev@marius-peter.com>
Committer date
lib/app/service.ml
index 0d8c4309..9b0d4960 100644..100644
@@ -205,36 +205,29 @@
205 205 module Records = struct
206 206 let find_record t trainee id = R.find t.repo trainee id
207 207
208 Removed: let add_to_record t trainee id stimulus =
208 Added: (* Apply every saved-record edit through the same lookup, validation, and
209 Added: replacement path. This keeps add and correction operations consistent. *)
210 Added: let update_record t trainee id ~edit =
209 211 R.find t.repo trainee id >>= function
210 212 | None -> Lwt.return (Error Unknown_workout)
211 213 | Some record -> (
212 Removed: match
213 Removed: Evidence.Workout.add_stimulus record.Repository.workout stimulus
214 Removed: with
215 Removed: | workout ->
214 Added: match edit record.Repository.workout with
215 Added: | Error error -> Lwt.return (Error (Rejected_edit error))
216 Added: | Ok workout ->
216 217 R.replace t.repo trainee { record with Repository.workout }
217 218 >|= fun replaced ->
218 219 if replaced then Ok { record with Repository.workout }
219 Removed: else Error Unknown_workout
220 Removed: | exception Evidence.Workout.Invalid error ->
221 Removed: Lwt.return (Error (Rejected_edit error)))
220 Added: else Error Unknown_workout)
222 221
222 Added: let add_to_record t trainee id stimulus =
223 Added: update_record t trainee id ~edit:(fun workout ->
224 Added: try Ok (Evidence.Workout.add_stimulus workout stimulus)
225 Added: with Evidence.Workout.Invalid error -> Error error)
226 Added:
223 227 let replace_in_record t trainee id ~slot stimulus =
224 Removed: R.find t.repo trainee id >>= function
225 Removed: | None -> Lwt.return (Error Unknown_workout)
226 Removed: | Some record -> (
227 Removed: match
228 Removed: Evidence.Workout.replace_stimulus record.Repository.workout ~slot
229 Removed: stimulus
230 Removed: with
231 Removed: | workout ->
232 Removed: R.replace t.repo trainee { record with Repository.workout }
233 Removed: >|= fun replaced ->
234 Removed: if replaced then Ok { record with Repository.workout }
235 Removed: else Error Unknown_workout
236 Removed: | exception Evidence.Workout.Invalid error ->
237 Removed: Lwt.return (Error (Rejected_edit error)))
228 Added: update_record t trainee id ~edit:(fun workout ->
229 Added: try Ok (Evidence.Workout.replace_stimulus workout ~slot stimulus)
230 Added: with Evidence.Workout.Invalid error -> Error error)
238 231
239 232 let history t trainee = R.history t.repo trainee
240 233 end