private static long CalculateActualStreamLength(Option<Commit> lastCommitInStream) { return lastCommitInStream .Map(commit => commit.EventIndexInStreamStartsFrom + commit.EventIds.Count()) .ValueOr(0); }
private static Commit CreateCommit( Guid streamId, Option<Commit> lastCommitInStream, Option<Commit> lastCommitAllStreams, IEnumerable<EventContainer> identifiedEvents) { var indexInStream = lastCommitInStream .Map(commit => commit.IndexInStream + 1) .ValueOr(0); var indexInAllStreams = lastCommitAllStreams .Map(commit => commit.IndexInAllStreams + 1) .ValueOr(0); var eventsIds = identifiedEvents.Select(identifiedEvent => identifiedEvent.Id); var eventIndexInStream = lastCommitInStream .Map(commit => commit.EventIndexInStreamStartsFrom + commit.EventIds.Count()) .ValueOr(0); var eventIndexInAllStreams = lastCommitAllStreams .Map(commit => commit.EventIndexInAllStreamsStartsFrom + commit.EventIds.Count()) .ValueOr(0); return new Commit( streamId: streamId, indexInStream: indexInStream, indexInAllStreams: indexInAllStreams, eventIndexInStreamStartsFrom: eventIndexInStream, eventIndexInAllStreamsStartsFrom: eventIndexInAllStreams, eventIds: eventsIds); }