Class: Synapse::EventStore::Mongo::DocumentPerCommitStrategy::EventDocument

Inherits:
Object
  • Object
show all
Defined in:
lib/synapse/event_store/mongo/per_commit_strategy.rb

Overview

Mongo document that represents a single event as part of a commit document

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#idString (readonly)

Returns:

  • (String)


140
141
142
# File 'lib/synapse/event_store/mongo/per_commit_strategy.rb', line 140

def id
  @id
end

#sequence_numberInteger (readonly)

Returns:

  • (Integer)


146
147
148
# File 'lib/synapse/event_store/mongo/per_commit_strategy.rb', line 146

def sequence_number
  @sequence_number
end

#timestampTime (readonly)

Returns:

  • (Time)


143
144
145
# File 'lib/synapse/event_store/mongo/per_commit_strategy.rb', line 143

def timestamp
  @timestamp
end

Instance Method Details

#from_event(event, serializer) ⇒ EventDocument

Parameters:

  • event (EventMessage)
  • serializer (Serializer)

Returns:



162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
# File 'lib/synapse/event_store/mongo/per_commit_strategy.rb', line 162

def from_event(event, serializer)
  serialization_target = String
  if serializer.can_serialize_to? Hash
    serialization_target = Hash
  end

   = serializer. event, serialization_target
  serialized_payload = serializer.serialize_payload event, serialization_target

  @id = event.id
  @metadata = .content
  @payload = serialized_payload.content
  @payload_type = serialized_payload.type.name
  @payload_revision = serialized_payload.type.revision
  @timestamp = event.timestamp
  @sequence_number = event.sequence_number

  self
end

#from_hash(hash) ⇒ EventDocument

Parameters:

  • hash (Hash)

Returns:



184
185
186
187
188
189
190
191
192
193
194
195
196
# File 'lib/synapse/event_store/mongo/per_commit_strategy.rb', line 184

def from_hash(hash)
  hash.symbolize_keys!

  @id = hash.fetch :id
  @metadata = hash.fetch :metadata
  @payload = hash.fetch :payload
  @payload_type = hash.fetch :payload_type
  @payload_revision = hash.fetch :payload_revision
  @timestamp = hash.fetch :timestamp
  @sequence_number = hash.fetch :sequence_number

  self
end

#metadataSerializedObject

Returns:

  • (SerializedObject)


149
150
151
# File 'lib/synapse/event_store/mongo/per_commit_strategy.rb', line 149

def 
  Serialization::SerializedMetadata.new @metadata, @metadata.class
end

#payloadSerializedObject

Returns:

  • (SerializedObject)


154
155
156
157
# File 'lib/synapse/event_store/mongo/per_commit_strategy.rb', line 154

def payload
  Serialization::SerializedObject.new @payload, @payload.class,
    Serialization::SerializedType.new(@payload_type, @payload_revision)
end

#to_hashHash

Returns:

  • (Hash)


199
200
201
202
203
204
205
206
207
# File 'lib/synapse/event_store/mongo/per_commit_strategy.rb', line 199

def to_hash
  { id: @id,
    metadata: @metadata,
    payload: @payload,
    payload_type: @payload_type,
    payload_revision: @payload_revision,
    timestamp: @timestamp,
    sequence_number: @sequence_number }
end