File tree Expand file tree Collapse file tree 3 files changed +28
-9
lines changed
Expand file tree Collapse file tree 3 files changed +28
-9
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
@@ -28,20 +30,14 @@ def stop(id) = with_state(id) { |state| Issue.stop(state) }
2830
2931 private
3032
31- def stream_name ( id ) = "Issue$#{ id } "
32-
3333 def with_state ( id )
34- state =
35- @event_store
36- . read
37- . stream ( stream_name ( id ) )
38- . reduce ( IssueState . initial ( id ) ) { |state , event | state . apply ( event ) }
34+ state = @repository . load ( id , IssueState . initial ( id ) )
3935
4036 case yield ( state )
4137 in StandardError
4238 raise Error
4339 in Event => event
44- @event_store . append ( event , stream_name : stream_name ( id ) )
40+ @repository . store ( id , event )
4541 end
4642 end
4743 end
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