public RoadRegistryContext(EventSourcedEntityMap map, IStreamStore store, IRoadNetworkSnapshotReader snapshotReader, JsonSerializerSettings settings, EventMapping mapping) { RoadNetworks = new RoadNetworks(map, store, snapshotReader, settings, mapping); RoadNetworkChangesArchives = new RoadNetworkChangesArchives(map, store, settings, mapping); Organizations = new Organizations(map, store, settings, mapping); }
public RoadNetworkChangesArchives(EventSourcedEntityMap map, IStreamStore store, JsonSerializerSettings settings, EventMapping mapping) { _map = map ?? throw new ArgumentNullException(nameof(map)); _store = store ?? throw new ArgumentNullException(nameof(store)); _settings = settings ?? throw new ArgumentNullException(nameof(settings)); _mapping = mapping ?? throw new ArgumentNullException(nameof(mapping)); }
public RoadNetworks(EventSourcedEntityMap map, IStreamStore store, IRoadNetworkSnapshotReader snapshotReader, JsonSerializerSettings settings, EventMapping mapping) { _map = map ?? throw new ArgumentNullException(nameof(map)); _store = store ?? throw new ArgumentNullException(nameof(store)); _settings = settings ?? throw new ArgumentNullException(nameof(settings)); _mapping = mapping ?? throw new ArgumentNullException(nameof(mapping)); _snapshotReader = snapshotReader ?? throw new ArgumentNullException(nameof(snapshotReader)); }
public static ICommandHandlerBuilder <IRoadRegistryContext, TCommand> UseRoadRegistryContext <TCommand>( this ICommandHandlerBuilder <TCommand> builder, IStreamStore store, IRoadNetworkSnapshotReader snapshotReader, EventEnricher enricher) { if (store == null) { throw new ArgumentNullException(nameof(store)); } if (snapshotReader == null) { throw new ArgumentNullException(nameof(snapshotReader)); } if (enricher == null) { throw new ArgumentNullException(nameof(enricher)); } return(builder.Pipe <IRoadRegistryContext>(next => async(message, ct) => { var map = new EventSourcedEntityMap(); var context = new RoadRegistryContext(map, store, snapshotReader, SerializerSettings, EventMapping); await next(context, message, ct); foreach (var entry in map.Entries) { var events = entry.Entity.TakeEvents(); if (events.Length != 0) { var messageId = message.MessageId.ToString("N"); var version = entry.ExpectedVersion; Array.ForEach(events, @event => enricher(@event)); var messages = Array.ConvertAll( events, @event => new NewStreamMessage( Deterministic.Create(Deterministic.Namespaces.Events, $"{messageId}-{version++}"), EventMapping.GetEventName(@event.GetType()), JsonConvert.SerializeObject(@event, SerializerSettings) )); await store.AppendToStream(entry.Stream, entry.ExpectedVersion, messages, ct); } } } )); }