File tree Expand file tree Collapse file tree 3 files changed +28
-13
lines changed
Expand file tree Collapse file tree 3 files changed +28
-13
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"
Original file line number Diff line number Diff line change 11module ProjectManagement
22 class Handler
33 def initialize ( event_store )
4- @event_store = event_store
54 @decider = Issue
5+ @repository = Repository . new ( event_store )
66 end
77
88 def call ( cmd )
9- state =
10- @event_store
11- . read
12- . stream ( stream_name ( cmd . id ) )
13- . reduce ( @decider . initial_state ( cmd . id ) ) do |state , event |
14- @decider . evolve ( state , event )
15- end
9+ state = @repository . load ( cmd . id , @decider )
1610
1711 case result = @decider . decide ( cmd , state )
1812 when StandardError
1913 raise Error
2014 else
21- @event_store . append ( result , stream_name : stream_name ( cmd . id ) )
15+ @repository . store ( cmd . id , result )
2216 end
2317 end
24-
25- private
26-
27- def stream_name ( id ) = "Issue$#{ id } "
2818 end
2919end
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 , decider )
8+ @event_store
9+ . read
10+ . stream ( stream_name ( id ) )
11+ . reduce ( decider . initial_state ( id ) ) do |state , event |
12+ decider . evolve ( state , event )
13+ end
14+ end
15+
16+ def store ( id , events )
17+ @event_store . append ( events , stream_name : stream_name ( id ) )
18+ end
19+
20+ private
21+
22+ def stream_name ( id ) = "Issue$#{ id } "
23+ end
24+ end
You can’t perform that action at this time.
0 commit comments