public void AppendToStream(string id, int originalVersion, ICollection<IEvent> events) { var stream = OpenStream(id); var transitionEvents = new List<TransitionEvent>(); foreach (var e in events) { e.Metadata.StoredDate = DateTime.UtcNow; e.Metadata.TypeName = e.GetType().Name; transitionEvents.Add(new TransitionEvent(e.GetType().AssemblyQualifiedName, e, null)); } var transition = new Transition(new TransitionId(id, originalVersion + 1), DateTime.UtcNow, transitionEvents, null); stream.Write(transition); _eventBus.Publish(events); }
public void Write(Transition transition) { if (_readStarted) throw new InvalidOperationException("You cannot write to stream once you read from it. Open another stream."); try { _transitionRepository.SaveTransition(transition); } catch (DuplicateTransitionException e) { if (e.VersionId > 1) { throw new ConcurrencyException("Transition with same Version was saved before."); } throw; } }
public void SaveTransition(Transition transition) { _transitions.Add(transition); }