Module: AggregateRoot
- Defined in:
- lib/aggregate_root.rb,
lib/aggregate_root/version.rb,
lib/aggregate_root/configuration.rb,
lib/aggregate_root/default_apply_strategy.rb
Defined Under Namespace
Modules: ClassMethods
Classes: Configuration, DefaultApplyStrategy
Constant Summary
collapse
- VERSION =
"0.27.0"
- MissingHandler =
Class.new(StandardError)
Class Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Class Attribute Details
.configuration ⇒ Object
Returns the value of attribute configuration.
3
4
5
|
# File 'lib/aggregate_root/configuration.rb', line 3
def configuration
@configuration
end
|
Class Method Details
6
7
8
9
|
# File 'lib/aggregate_root/configuration.rb', line 6
def self.configure
self.configuration ||= Configuration.new
yield(configuration)
end
|
.included(host_class) ⇒ Object
27
28
29
|
# File 'lib/aggregate_root.rb', line 27
def self.included(host_class)
host_class.extend(ClassMethods)
end
|
Instance Method Details
#apply(*events) ⇒ Object
31
32
33
34
35
36
|
# File 'lib/aggregate_root.rb', line 31
def apply(*events)
events.each do |event|
apply_strategy.(self, event)
unpublished << event
end
end
|
#load(stream_name, event_store: default_event_store) ⇒ Object
38
39
40
41
42
43
44
45
46
47
|
# File 'lib/aggregate_root.rb', line 38
def load(stream_name, event_store: default_event_store)
@loaded_from_stream_name = stream_name
events = event_store.read_stream_events_forward(stream_name)
events.each do |event|
apply(event)
end
@version = events.size - 1
@unpublished_events = nil
self
end
|
#store(stream_name = @loaded_from_stream_name, event_store: default_event_store) ⇒ Object
49
50
51
52
53
|
# File 'lib/aggregate_root.rb', line 49
def store(stream_name = @loaded_from_stream_name, event_store: default_event_store)
event_store.publish_events(unpublished_events, stream_name: stream_name, expected_version: version)
@version += unpublished_events.size
@unpublished_events = nil
end
|
#unpublished_events ⇒ Object
55
56
57
|
# File 'lib/aggregate_root.rb', line 55
def unpublished_events
unpublished.each
end
|