class Synapse::EventStore::Mongo::DocumentPerCommitStrategy::EventDocument

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

Attributes

id[R]

@return [String]

sequence_number[R]

@return [Integer]

timestamp[R]

@return [Time]

Public Instance Methods

from_event(event, serializer) click to toggle source

@param [EventMessage] event @param [Serializer] serializer @return [EventDocument]

# 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

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

  @id = event.id
  @metadata = serialized_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) click to toggle source

@param [Hash] hash @return [EventDocument]

# 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
metadata() click to toggle source

@return [SerializedObject]

# File lib/synapse/event_store/mongo/per_commit_strategy.rb, line 149
def metadata
  Serialization::SerializedMetadata.new @metadata, @metadata.class
end
payload() click to toggle source

@return [SerializedObject]

# 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_hash() click to toggle source

@return [Hash]

# 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