class Dry::Facts::Event
Attributes
data[R]
metadata[R]
Public Class Methods
aggregate_constructor()
click to toggle source
# File lib/dry/facts/event.rb, line 14 def aggregate_constructor @@_aggregate_constructor = true end
from_h(h)
click to toggle source
# File lib/dry/facts/event.rb, line 18 def from_h(h) Object .const_get(h[:metadata][:type][:name]) .new( data: h[:data], metadata: h[:metadata]) end
new(data: {})
click to toggle source
object/hash has some infrastructure-related metadata? metadata id event-type-name event-type-version aggregate-id ? correlation-id ? causation-id ? stream-name data
# File lib/dry/facts/event.rb, line 37 def initialize data: {}, metadata: {} @metadata = _default_metadata_merged_with(metadata) || Hash.new @data = {}.merge(data) || Hash.new freeze end
Public Instance Methods
aggregate_id()
click to toggle source
# File lib/dry/facts/event.rb, line 56 def aggregate_id self.metadata[:aggregate_id] end
id()
click to toggle source
# File lib/dry/facts/event.rb, line 44 def id @metadata[:id] end
to_h()
click to toggle source
# File lib/dry/facts/event.rb, line 60 def to_h { data: self.data, metadata: self.metadata } end
uuid()
click to toggle source
# File lib/dry/facts/event.rb, line 48 def uuid @metadata[:uuid] end
Private Instance Methods
_default_metadata_merged_with(metadata={})
click to toggle source
# File lib/dry/facts/event.rb, line 67 def _default_metadata_merged_with(metadata={}) generated_default_aggregate_id = if @@_aggregate_constructor SecureRandom.uuid end generated_default_uuid = SecureRandom.uuid generated_default_id = generated_default_uuid { id: (generated_default_id), uuid: (generated_default_uuid), aggregate_id: generated_default_aggregate_id, type: { name: self.class.name } } .merge(metadata || {}) end