File tree Expand file tree Collapse file tree 3 files changed +30
-11
lines changed
Expand file tree Collapse file tree 3 files changed +30
-11
lines changed Original file line number Diff line number Diff line change 11require_relative "../../../shared/lib/project_management"
22require_relative "project_management/handler"
33require_relative "project_management/issue"
4+ require_relative "project_management/repository"
45require_relative "project_management/issue_state"
Original file line number Diff line number Diff line change 11module ProjectManagement
22 class Handler
3- def initialize ( event_store ) = @event_store = event_store
3+ def initialize ( event_store )
4+ @repository = Repository . new ( event_store )
5+ end
46
57 def call ( cmd )
68 case cmd
@@ -30,18 +32,12 @@ def stop(id) = with_aggregate(id) { |issue| issue.stop }
3032
3133 private
3234
33- def stream_name ( id ) = "Issue$#{ id } "
34-
3535 def with_aggregate ( id )
36- state =
37- @event_store
38- . read
39- . stream ( stream_name ( id ) )
40- . reduce ( IssueState . initial ( id ) ) { |state , event | state . apply ( event ) }
41-
42- yield issue = Issue . new ( state )
36+ state = @repository . load ( id , IssueState . initial ( id ) )
37+ issue = Issue . new ( state )
38+ yield issue
4339
44- @event_store . append ( issue . changes , stream_name : stream_name ( id ) )
40+ @repository . store ( id , issue . changes )
4541 end
4642 end
4743end
Original file line number Diff line number Diff line change 1+ module ProjectManagement
2+ class Repository
3+ def initialize ( event_store )
4+ @event_store = event_store
5+ end
6+
7+ def load ( id , initial_state )
8+ @event_store
9+ . read
10+ . stream ( stream_name ( id ) )
11+ . reduce ( initial_state ) { |state , event | state . apply ( event ) }
12+ end
13+
14+ def store ( id , events )
15+ @event_store . append ( events , stream_name : stream_name ( id ) )
16+ end
17+
18+ private
19+
20+ def stream_name ( id ) = "Issue$#{ id } "
21+ end
22+ end
You can’t perform that action at this time.
0 commit comments