Exemple #1
0
        private static IProjector BuildProjector <TProjector>(IServiceProvider sp, IConfiguration config)
            where TProjector : IProjector
        {
            var sharedSettings    = ProjectorsSettings.Get(config);
            var projectorSettings = ProjectorSettings.Get(config, typeof(TProjector).Name);
            var subFactoryOptions = GetSubscriberFactoryOptions(sharedSettings);

            var logger              = sp.GetRequiredService <IStandardLogger <TProjector> >();
            var subscriberFactory   = sp.GetRequiredService <ISubscriberFactory>();
            var streamClientFactory = sp.GetRequiredService <IStreamClientFactory>();
            var streamStateRepo     = new StreamStateRepo(logger, projectorSettings.StreamStateBasePath);
            var resolver            = new AllBusinessEventsResolver(logger);

            var projectorType = typeof(TProjector);

            var baseDependencies = new ProjectorDependencies(logger, subscriberFactory, subFactoryOptions, streamClientFactory, streamStateRepo, resolver, MapSubscriptionStreams(sharedSettings.SubscriptionStreams));

            if (projectorType == typeof(Projections.EmailReport.EmailReportProjector))
            {
                return(new Projections.EmailReport.EmailReportProjector(baseDependencies, sp.GetRequiredService <IDbContextScopeFactory <Projections.EmailReport.EmailReportDb.EmailReportDbContext> >()));
            }

            if (projectorType == typeof(Projections.SalesReport.SalesReportProjector))
            {
                return(new Projections.SalesReport.SalesReportProjector(baseDependencies, sp.GetRequiredService <IDbContextScopeFactory <Projections.SalesReport.SalesReportDb.SalesReportDbContext> >()));
            }

            return(null);
        }
Exemple #2
0
 private static SubscriberFactoryOptions GetSubscriberFactoryOptions(ProjectorsSettings settings) =>
 new SubscriberFactoryOptions(
     settings.MaxResolutionQueueSize, settings.MaxSortingQueueSize,
     settings.MaxHandlingQueuesSharedSize, settings.MaxParallelHandlerExecutions
     );