Class: Synapse::EventStore::Mongo::DocumentPerCommitStrategy::EventDocument
- Inherits:
-
Object
- Object
- Synapse::EventStore::Mongo::DocumentPerCommitStrategy::EventDocument
- 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
- #id ⇒ String readonly
- #sequence_number ⇒ Integer readonly
- #timestamp ⇒ Time readonly
Instance Method Summary collapse
- #from_event(event, serializer) ⇒ EventDocument
- #from_hash(hash) ⇒ EventDocument
- #metadata ⇒ SerializedObject
- #payload ⇒ SerializedObject
- #to_hash ⇒ Hash
Instance Attribute Details
#id ⇒ String (readonly)
140 141 142 |
# File 'lib/synapse/event_store/mongo/per_commit_strategy.rb', line 140 def id @id end |
#sequence_number ⇒ Integer (readonly)
146 147 148 |
# File 'lib/synapse/event_store/mongo/per_commit_strategy.rb', line 146 def sequence_number @sequence_number end |
#timestamp ⇒ Time (readonly)
143 144 145 |
# File 'lib/synapse/event_store/mongo/per_commit_strategy.rb', line 143 def @timestamp end |
Instance Method Details
#from_event(event, serializer) ⇒ EventDocument
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. @sequence_number = event.sequence_number self end |
#from_hash(hash) ⇒ EventDocument
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 |
#metadata ⇒ SerializedObject
149 150 151 |
# File 'lib/synapse/event_store/mongo/per_commit_strategy.rb', line 149 def Serialization::SerializedMetadata.new @metadata, @metadata.class end |
#payload ⇒ 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_hash ⇒ 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 |