public EventDocument Serialize(IUncommittedEvent eventToSerialize) { var id = eventToSerialize.Metadata.GetValue(MetadataKeys.EventId, value => Guid.Parse(value.ToString())); var eventType = eventToSerialize.Metadata.GetValue(MetadataKeys.EventName, value => value.ToString()); var timestamp = eventToSerialize.Metadata.GetValue(MetadataKeys.Timestamp, value => (DateTime)value); var dataJson = JsonSerializer.Serialize(eventToSerialize.Data, eventToSerialize.Data.GetType(), JsonSettings); var metadataJson = JsonSerializer.Serialize(eventToSerialize.Metadata, JsonSettings); var @event = new EventDocument { Id = id, Timestamp = timestamp, EventType = eventType, Version = eventToSerialize.Version, EventData = BsonDocument.Parse(dataJson), Metadata = BsonDocument.Parse(metadataJson) }; return(@event); }
private static ICommittedEvent InstantiateCommittedEvent(IUncommittedEvent serializedEvent) { return(new InMemoryCommittedEvent(serializedEvent.AggregateId, serializedEvent.Version, serializedEvent.Data, serializedEvent.Metadata)); }