File tree Expand file tree Collapse file tree 2 files changed +24
-9
lines changed Expand file tree Collapse file tree 2 files changed +24
-9
lines changed Original file line number Diff line number Diff line change @@ -4,20 +4,21 @@ module RubyEventStore
44 class Projection
55 private_class_method :new
66
7- def initialize ( initial_state = nil )
7+ def initialize ( initial_state = nil , event_type_resolver )
88 @handlers = { }
9+ @event_type_resolver = event_type_resolver
910 @init = -> { initial_state }
1011 end
1112
12- def self . init ( initial_state = nil )
13- new ( initial_state )
13+ def self . init ( initial_state = nil , event_type_resolver : EventTypeResolver . new )
14+ new ( initial_state , event_type_resolver )
1415 end
1516
1617 def on ( *event_klasses , &block )
1718 raise ( ArgumentError , 'No handler block given' ) unless block_given?
1819
1920 event_klasses . each do |event_klass |
20- name = event_klass . to_s
21+ name = @event_type_resolver . call ( event_klass )
2122
2223 @handlers [ name ] = -> ( state , event ) { block . call ( state , event ) }
2324 end
Original file line number Diff line number Diff line change @@ -229,15 +229,29 @@ module RubyEventStore
229229 expect ( state ) . to eq ( initial_state )
230230 end
231231
232- specify "events with event type defined as class method" do
232+ specify "events with custom event type" do
233+ class CustomResolver
234+ def call ( event )
235+ event . resolves_as
236+ end
237+ end
238+
233239 class Snowflake < Event
234- def self . event_type
240+ def self . resolves_as
241+ "snowflake"
242+ end
243+
244+ def event_type
235245 "snowflake"
236246 end
237247 end
238248
239249 class SnowflakeV2 < Event
240- def self . event_type
250+ def self . resolves_as
251+ "snowflake"
252+ end
253+
254+ def event_type
241255 "snowflake"
242256 end
243257 end
@@ -247,9 +261,9 @@ def self.event_type
247261
248262 state =
249263 Projection
250- . init ( { snowflake : 0 } )
264+ . init ( { snowflake : 0 } , event_type_resolver : CustomResolver . new )
251265 . on ( Snowflake , SnowflakeV2 ) do |state , event |
252- state [ event . class . event_type . to_sym ] += event . data . fetch ( :arms )
266+ state [ :snowflake ] += event . data . fetch ( :arms )
253267 state
254268 end
255269 . call ( event_store . read . stream ( "snowflake$1" ) )
You can’t perform that action at this time.
0 commit comments