public EventsController( UserManager <ApplicationUser> userManager, ApplicationDbContext context) { _userManager = userManager; _eventsReader = new EventsReader(context); }
public OutboxPublisher( DbConnections connections, IReadOnlyDictionary <string, IEventStoreContext> categories, EventsReader reader) { _connections = connections; _categories = categories; _reader = reader; }
public EventsOutbox(IEventStoreContext context, EventsReader reader) { _context = context ?? throw new ArgumentNullException(nameof(context)); _reader = reader ?? throw new ArgumentNullException(nameof(reader)); }
public static IServiceCollection AddEventStore( this IServiceCollection services, EventStoreSettings settings, ILoggerFactory loggerFactory) { if (services == null) { throw new ArgumentNullException(nameof(services)); } if (settings == null) { throw new ArgumentNullException(nameof(settings)); } if (loggerFactory == null) { throw new ArgumentNullException(nameof(loggerFactory)); } if (settings.Store == null) { throw new ArgumentException("Store settings not specified.", nameof(settings.Store)); } if (settings.AggregateFactories == null) { throw new ArgumentException("Factories not specified.", nameof(settings.AggregateFactories)); } var compositeContext = new CompositeEventStoreContext(settings.Store.Contexts); var typesRegistry = new EventTypeRegistry(settings.Store.Connections, compositeContext); InitializeSchemas(settings.Store, typesRegistry); var reader = new EventsReader(settings.Store.Connections, compositeContext, typesRegistry); var eventStore = new Postgres.EventStore( reader, new EventsWriter(settings.Store.Connections, compositeContext, typesRegistry, new EventsOutbox(compositeContext, reader), loggerFactory.CreateLogger <EventsWriter>()) ); var backgroundPublisher = new OutboxPublisherService( new OutboxPublisher( settings.Store.Connections, settings.Store.Contexts, reader), settings.Store.OutboxInterval, loggerFactory.CreateLogger <OutboxPublisherService>()); services .AddAggregates(settings.AggregateFactories) .AddStreamResolver(settings.Store.Serializer) .AddSingleton <IEventStore>(eventStore) .AddSingleton <IHostedService>(backgroundPublisher); if (settings.Snapshots == null) { return(services); } return(services.AddSnapshotStore( settings.Snapshots, settings.Store.Connections, compositeContext, loggerFactory)); }