public InProcessChangeEventNotificationSubscription(ILogger logger, IChangeEventMigrator migrator, IEnumerable <IDomainEventPublisherSubscriberPair> pubSubPairs, params IEventNotifyingStorage[] eventingStorages) : base(logger, eventingStorages) { logger.GuardAgainstNull(nameof(logger)); migrator.GuardAgainstNull(nameof(migrator)); pubSubPairs.GuardAgainstNull(nameof(pubSubPairs)); this.notificationProducer = new DomainEventNotificationProducer(logger, migrator, pubSubPairs.ToArray()); }
public DomainEventNotificationProducer(ILogger logger, IChangeEventMigrator migrator, params IDomainEventPublisherSubscriberPair[] pubSubPairs) { logger.GuardAgainstNull(nameof(logger)); pubSubPairs.GuardAgainstNull(nameof(pubSubPairs)); migrator.GuardAgainstNull(nameof(migrator)); this.logger = logger; this.pubSubPairs = pubSubPairs; this.migrator = migrator; }
public GeneralEventStreamStorage(IRecorder recorder, IDomainFactory domainFactory, IChangeEventMigrator migrator, IRepository repository) { recorder.GuardAgainstNull(nameof(recorder)); repository.GuardAgainstNull(nameof(repository)); domainFactory.GuardAgainstNull(nameof(domainFactory)); migrator.GuardAgainstNull(nameof(migrator)); this.recorder = recorder; this.repository = repository; this.domainFactory = domainFactory; this.migrator = migrator; this.containerName = typeof(TAggregateRoot).GetEntityNameSafe(); }
public ReadModelProjector(IRecorder recorder, IReadModelCheckpointStore checkpointStore, IChangeEventMigrator migrator, params IReadModelProjection[] projections) { recorder.GuardAgainstNull(nameof(recorder)); checkpointStore.GuardAgainstNull(nameof(checkpointStore)); projections.GuardAgainstNull(nameof(projections)); migrator.GuardAgainstNull(nameof(migrator)); this.recorder = recorder; this.checkpointStore = checkpointStore; this.projections = projections; this.migrator = migrator; }
public InProcessReadModelProjectionSubscription(ILogger logger, IIdentifierFactory idFactory, IChangeEventMigrator migrator, IDomainFactory domainFactory, IRepository repository, IEnumerable <IReadModelProjection> projections, params IEventNotifyingStorage[] eventingStorages) : base(logger, eventingStorages) { logger.GuardAgainstNull(nameof(logger)); idFactory.GuardAgainstNull(nameof(idFactory)); migrator.GuardAgainstNull(nameof(migrator)); domainFactory.GuardAgainstNull(nameof(domainFactory)); repository.GuardAgainstNull(nameof(repository)); projections.GuardAgainstNull(nameof(projections)); var checkpointReadModel = new ReadModelCheckpointStore(logger, idFactory, domainFactory, repository); this.projector = new ReadModelProjector(logger, checkpointReadModel, migrator, projections?.ToArray()); }
public static IChangeEvent CreateEventFromJson(this EventMetadata metadata, string eventId, string eventJson, IChangeEventMigrator migrator) { metadata.GuardAgainstNull(nameof(metadata)); eventId.GuardAgainstNullOrEmpty(nameof(eventId)); eventJson.GuardAgainstNullOrEmpty(nameof(eventJson)); var typeName = metadata.Fqn; var eventData = eventJson; try { return(migrator.Rehydrate(eventId, eventData, typeName)); } catch (Exception ex) { throw new InvalidOperationException($"Failed to deserialize event '{eventId}' as type: '{typeName}'", ex); } }
void IPersistableAggregateRoot.LoadChanges(IEnumerable <EntityEvent> history, IChangeEventMigrator migrator) { foreach (var item in history) { var @event = item.ToEvent(migrator); OnStateChanged(@event); var expectedVersion = ChangeVersion + 1; if (item.Version != expectedVersion) { throw new InvalidOperationException( $"The version of this loaded change ('{item.Version}') was not expected. Expected version '{expectedVersion}'. Perhaps a missing change or this change was replayed out of order?"); } ChangeVersion = expectedVersion; } }
public void LoadChanges(IEnumerable <EntityEvent> history, IChangeEventMigrator migrator) { LoadedChanges = history; }
private static IChangeEvent DeserializeEvent(EventStreamStateChangeEvent changeEvent, IChangeEventMigrator migrator) { return(changeEvent.Metadata.CreateEventFromJson(changeEvent.Id, changeEvent.Data, migrator)); }
public IChangeEvent ToEvent(IChangeEventMigrator migrator) { return(Metadata.CreateEventFromJson(Id, Data, migrator)); }