Skip to content
This repository was archived by the owner on Apr 5, 2025. It is now read-only.

Commit 47780fc

Browse files
Make replay functions clearer
1 parent 38def97 commit 47780fc

File tree

2 files changed

+39
-37
lines changed

2 files changed

+39
-37
lines changed

FsSimpleCQRS/CommandHandlers.fs

Lines changed: 35 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,35 @@
1-
namespace SimpleCQRS
2-
open SimpleCQRS.Commands
3-
open SimpleCQRS.Events
4-
open InventoryItem
5-
6-
7-
type InventoryCommandHandlers (eventStore: IEventStore) =
8-
let load id = eventStore.GetEventsForAggregate id |> replayWith applyOnInventoryItem
9-
let save = eventStore.SaveEvents
10-
11-
// load aggregate, execute f on it, then save
12-
let applyOn id version f =
13-
load id |>
14-
f |>
15-
save id version
16-
17-
member x.Handle (c: CreateInventoryItem) =
18-
create c.InventoryItemId c.Name |>
19-
save c.InventoryItemId -1
20-
21-
member x.Handle (c: DeactivateInventoryItem) =
22-
deactivate |>
23-
applyOn c.InventoryItemId c.OriginalVersion
24-
25-
member x.Handle (c: RemoveItemsFromInventory) =
26-
remove c.Count |>
27-
applyOn c.InventoryItemId c.OriginalVersion
28-
29-
member x.Handle (c: CheckInItemsToInventory) =
30-
checkIn c.Count |>
31-
applyOn c.InventoryItemId c.OriginalVersion
32-
33-
member x.Handle (c: RenameInventoryItem) =
34-
rename c.NewName |>
35-
applyOn c.InventoryItemId c.OriginalVersion
1+
namespace SimpleCQRS
2+
open SimpleCQRS.Commands
3+
open SimpleCQRS.Events
4+
open InventoryItem
5+
6+
7+
type InventoryCommandHandlers (eventStore: IEventStore) =
8+
let load id = eventStore.GetEventsForAggregate id |> replayInventoryItem
9+
let save = eventStore.SaveEvents
10+
11+
// load aggregate, execute f on it, then save
12+
let applyOn id version f =
13+
load id |>
14+
f |>
15+
save id version
16+
17+
member x.Handle (c: CreateInventoryItem) =
18+
create c.InventoryItemId c.Name |>
19+
save c.InventoryItemId -1
20+
21+
member x.Handle (c: DeactivateInventoryItem) =
22+
deactivate |>
23+
applyOn c.InventoryItemId c.OriginalVersion
24+
25+
member x.Handle (c: RemoveItemsFromInventory) =
26+
remove c.Count |>
27+
applyOn c.InventoryItemId c.OriginalVersion
28+
29+
member x.Handle (c: CheckInItemsToInventory) =
30+
checkIn c.Count |>
31+
applyOn c.InventoryItemId c.OriginalVersion
32+
33+
member x.Handle (c: RenameInventoryItem) =
34+
rename c.NewName |>
35+
applyOn c.InventoryItemId c.OriginalVersion

FsSimpleCQRS/Domain.fs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ module InventoryItem =
3838
| :? InventoryItemDeactivated as e -> {s with Activated = false; }
3939
| _ -> s
4040

41-
let replayWith application =
41+
let replay = Seq.fold
42+
43+
let replayInventoryItem events =
4244
let empty = { Id = Guid.Empty; Activated = false}
43-
Seq.fold application empty
45+
replay applyOnInventoryItem empty events

0 commit comments

Comments
 (0)