public virtual void UpdatePublishedVersion(EventPublishedVersionData versionData) { _versionCache.GetOrAdd(versionData.AggregateRootTypeCode, aggregateRootTypeCode => new ConcurrentDictionary <string, int>()) .AddOrUpdate(versionData.AggregateRootId, aggregateRootId => versionData.Version, (aggregateRootId, version) => { if (version > versionData.Version) { return(version); } return(versionData.Version); }); }
private void EventExecutedAndVersionPublished(EventStream @event) { @event.Events.ForEach(TryExecuteEvent); var versionData = new EventPublishedVersionData { AggregateRootId = @event.AggregateRootId, AggregateRootTypeCode = @event.AggregateRootTypeCode, Version = @event.EndVersion }; if (@event.StartVersion == 1) { _eventPublishedVersionStore.WriteFirstVersion(versionData); } else { _eventPublishedVersionStore.UpdatePublishedVersion(versionData); } }
public virtual void WriteFirstVersion(EventPublishedVersionData versionData) { this.UpdatePublishedVersion(versionData); }