File tree Expand file tree Collapse file tree 3 files changed +42
-25
lines changed
Expand file tree Collapse file tree 3 files changed +42
-25
lines changed Original file line number Diff line number Diff line change 33require_relative "../../../shared/lib/project_management"
44require_relative "project_management/handler"
55require_relative "project_management/issue"
6+ require_relative "project_management/repository"
67require_relative "project_management/ui"
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
4+ @repository = Repository . new ( event_store )
55 end
66
77 def call ( cmd )
@@ -67,31 +67,10 @@ def resolve(id)
6767
6868 private
6969
70- def stream_name ( id ) = "Issue$#{ id } "
71-
7270 def load_issue ( id )
73- issue =
74- @event_store
75- . read
76- . stream ( stream_name ( id ) )
77- . reduce ( Issue . new ) do |issue , event |
78- case event
79- when IssueOpened
80- issue . open
81- when IssueProgressStarted
82- issue . start
83- when IssueProgressStopped
84- issue . stop
85- when IssueResolved
86- issue . resolve
87- when IssueReopened
88- issue . reopen
89- when IssueClosed
90- issue . close
91- end
92- end
93-
94- @event_store . append ( yield ( issue ) , stream_name : stream_name ( id ) )
71+ issue = @repository . load ( id , Issue . new )
72+ events = yield ( issue )
73+ @repository . store ( id , events )
9574 end
9675 end
9776end
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_issue )
8+ @event_store
9+ . read
10+ . stream ( stream_name ( id ) )
11+ . reduce ( initial_issue ) do |issue , event |
12+ case event
13+ when IssueOpened
14+ issue . open
15+ when IssueProgressStarted
16+ issue . start
17+ when IssueProgressStopped
18+ issue . stop
19+ when IssueResolved
20+ issue . resolve
21+ when IssueReopened
22+ issue . reopen
23+ when IssueClosed
24+ issue . close
25+ end
26+ end
27+ end
28+
29+ def store ( id , events )
30+ @event_store . append ( events , stream_name : stream_name ( id ) )
31+ end
32+
33+ private
34+
35+ def stream_name ( id ) = "Issue$#{ id } "
36+ end
37+ end
You can’t perform that action at this time.
0 commit comments