コード例 #1
0
        public static IOpenCqrsServiceBuilder AddCosmosDbMongoDbProvider(this IOpenCqrsServiceBuilder builder, IConfiguration configuration)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }

            builder.Services
            .Configure <DomainDbConfiguration>(configuration.GetSection("DomainDbConfiguration"));

            builder.Services
            .AddTransient <IAggregateStore, AggregateStore>()
            .AddTransient <ICommandStore, CommandStore>()
            .AddTransient <IEventStore, EventStore>();

            builder.Services
            .AddTransient <IAggregateDocumentFactory, AggregateDocumentFactory>()
            .AddTransient <ICommandDocumentFactory, CommandDocumentFactory>()
            .AddTransient <IEventDocumentFactory, EventDocumentFactory>();

            return(builder);
        }
コード例 #2
0
        public static IOpenCqrsServiceBuilder AddSqliteStore(this IOpenCqrsServiceBuilder builder, Action <DatabaseOptions> configureOptions)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            if (configureOptions == null)
            {
                throw new ArgumentNullException(nameof(configureOptions));
            }

            builder.Services.Configure(configureOptions);

            var sp        = builder.Services.BuildServiceProvider();
            var dbOptions = sp.GetService <IOptions <DatabaseOptions> >().Value;

            builder.AddEFStore();

            builder.Services.AddDbContext <DomainDbContext>(options =>
                                                            options.UseSqlite(dbOptions.ConnectionString));

            builder.Services.AddTransient <IDatabaseProvider, SqliteDatabaseProvider>();

            return(builder);
        }
コード例 #3
0
        public static IOpenCqrsServiceBuilder AddCosmosDbSqlProvider(this IOpenCqrsServiceBuilder builder, IConfiguration configuration)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }

            builder.Services.Configure <DomainDbConfiguration>(configuration.GetSection("DomainDbConfiguration"));

            var endpoint = configuration.GetSection("DomainDbConfiguration:ServerEndpoint").Value;
            var key      = configuration.GetSection("DomainDbConfiguration:AuthKey").Value;

            builder.Services.AddSingleton <IDocumentClient>(x => new DocumentClient(new Uri(endpoint), key));

            builder.Services.AddTransient <ICommandStore, CommandStore>();
            builder.Services.AddTransient <IEventStore, EventStore>();

            builder.Services.AddTransient <IAggregateDocumentFactory, AggregateDocumentFactory>();
            builder.Services.AddTransient <ICommandDocumentFactory, CommandDocumentFactory>();
            builder.Services.AddTransient <IEventDocumentFactory, EventDocumentFactory>();

            builder.Services.AddTransient <IDocumentRepository <AggregateDocument>, AggregateRepository>();
            builder.Services.AddTransient <IDocumentRepository <CommandDocument>, CommandRepository>();
            builder.Services.AddTransient <IDocumentRepository <EventDocument>, EventRepository>();

            return(builder);
        }
コード例 #4
0
        public static IOpenCqrsServiceBuilder AddServiceBusProvider(this IOpenCqrsServiceBuilder builder, IConfiguration configuration)
        {
            builder.Services.Configure <ServiceBusConfiguration>(configuration.GetSection(Constants.ServiceBusConfigurationSection));

            builder.Services.AddTransient <IBusMessageDispatcher, BusMessageDispatcher>();
            builder.Services.AddTransient <IQueueClient, QueueClient>();
            builder.Services.AddTransient <IMessageFactory, MessageFactory>();

            return(builder);
        }
コード例 #5
0
        public static IOpenCqrsServiceBuilder AddEFProvider(this IOpenCqrsServiceBuilder builder, IConfiguration configuration)
        {
            builder.Services.Configure <DomainDbConfiguration>(configuration.GetSection(Constants.DomainDbConfigurationSection));

            builder.Services.Scan(s => s
                                  .FromAssembliesOf(typeof(DomainDbContext))
                                  .AddClasses()
                                  .AsImplementedInterfaces());

            return(builder);
        }
コード例 #6
0
        public static IOpenCqrsServiceBuilder AddEFStore(this IOpenCqrsServiceBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            builder.Services.Scan(s => s
                                  .FromAssembliesOf(typeof(DomainDbContext))
                                  .AddClasses()
                                  .AsImplementedInterfaces());

            return(builder);
        }
コード例 #7
0
        public static IOpenCqrsServiceBuilder AddInMemoryStore(this IOpenCqrsServiceBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            builder.AddEFStore();

            builder.Services.AddDbContext <DomainDbContext>(options =>
                                                            options.UseInMemoryDatabase(databaseName: "DomainDb"));

            builder.Services.AddTransient <IDatabaseProvider, InMemoryDatabaseProvider>();

            return(builder);
        }
コード例 #8
0
        public static IOpenCqrsServiceBuilder AddOptions(this IOpenCqrsServiceBuilder builder, Action <Options> setupAction)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            if (setupAction == null)
            {
                throw new ArgumentNullException(nameof(setupAction));
            }

            builder.Services.Configure(setupAction);

            return(builder);
        }
コード例 #9
0
        public static IOpenCqrsServiceBuilder AddFluentValidation(this IOpenCqrsServiceBuilder builder, Action <ValidationOptions> configureOptions)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            if (configureOptions == null)
            {
                throw new ArgumentNullException(nameof(configureOptions));
            }

            builder.Services.Configure(configureOptions);

            builder.Services.AddTransient <IValidationProvider, FluentValidationProvider>();

            return(builder);
        }
コード例 #10
0
        public static IOpenCqrsServiceBuilder AddMemoryCache(this IOpenCqrsServiceBuilder builder, Action <CacheOptions> configureOptions)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            if (configureOptions == null)
            {
                throw new ArgumentNullException(nameof(configureOptions));
            }

            builder.Services.Configure(configureOptions);

            builder.Services.AddTransient <ICacheProvider, MemoryCacheProvider>();

            return(builder);
        }
コード例 #11
0
        /// <summary>
        /// Adds the service bus provider.
        /// </summary>
        /// <param name="builder">The builder.</param>
        /// <param name="setupAction"></param>
        /// <returns></returns>
        public static IOpenCqrsServiceBuilder AddUI(this IOpenCqrsServiceBuilder builder, Action <UIOptions> setupAction)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            if (setupAction == null)
            {
                throw new ArgumentNullException(nameof(setupAction));
            }

            builder.Services.Configure(setupAction);

            builder.Services.Scan(s => s
                                  .FromAssembliesOf(typeof(GetAggregateModel))
                                  .AddClasses()
                                  .AsImplementedInterfaces());

            return(builder);
        }
コード例 #12
0
        /// <summary>
        /// Adds the service bus provider.
        /// </summary>
        /// <param name="builder">The builder.</param>
        /// <returns></returns>
        public static IOpenCqrsServiceBuilder AddRabbitMQ(this IOpenCqrsServiceBuilder builder, Action <BusOptions> configureOptions)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            if (configureOptions == null)
            {
                throw new ArgumentNullException(nameof(configureOptions));
            }

            builder.Services.Configure(configureOptions);

            builder.Services
            .AddTransient <IBusMessageDispatcher, BusMessageDispatcher>()
            .AddTransient <IBusProvider, RabbitMQBusProvider>()
            .AddTransient <IMessageFactory, MessageFactory>();

            return(builder);
        }
コード例 #13
0
        public static IOpenCqrsServiceBuilder AddRedisCache(this IOpenCqrsServiceBuilder builder, Action <RedisCacheOptions> configureOptions)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            if (configureOptions == null)
            {
                throw new ArgumentNullException(nameof(configureOptions));
            }

            builder.Services.Configure(configureOptions);

            var sp      = builder.Services.BuildServiceProvider();
            var options = sp.GetService <IOptions <RedisCacheOptions> >().Value;

            builder.Services.AddSingleton <IConnectionMultiplexer>(x => ConnectionMultiplexer.Connect(options.ConnectionString));
            builder.Services.AddSingleton <ICacheProvider>(x => new RedisCacheProvider(x.GetRequiredService <IConnectionMultiplexer>(), options.Db, options.AsyncState));

            return(builder);
        }
コード例 #14
0
        public static IOpenCqrsServiceBuilder AddMySqlProvider(this IOpenCqrsServiceBuilder builder, IConfiguration configuration)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }

            builder.AddEFProvider(configuration);

            var connectionString = configuration.GetSection(Constants.DomainDbConfigurationConnectionString).Value;

            builder.Services.AddDbContext <DomainDbContext>(options =>
                                                            options.UseMySQL(connectionString));

            builder.Services.AddTransient <IDatabaseProvider, MySqlDatabaseProvider>();

            return(builder);
        }
コード例 #15
0
        public static IOpenCqrsServiceBuilder AddCosmosMongoStore(this IOpenCqrsServiceBuilder builder, Action <MongoOptions> setupAction)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            if (setupAction == null)
            {
                throw new ArgumentNullException(nameof(setupAction));
            }

            builder.Services.Configure(setupAction);

            builder.Services
            .AddTransient <IStoreProvider, MongoStoreProvider>();

            builder.Services
            .AddTransient <IAggregateDocumentFactory, AggregateDocumentFactory>()
            .AddTransient <ICommandDocumentFactory, CommandDocumentFactory>()
            .AddTransient <IEventDocumentFactory, EventDocumentFactory>();

            return(builder);
        }
コード例 #16
0
 public static IOpenCqrsServiceBuilder AddMemoryCache(this IOpenCqrsServiceBuilder builder)
 {
     return(AddMemoryCache(builder, opt => { }));
 }
コード例 #17
0
 public static IOpenCqrsServiceBuilder AddCosmosSqlStore(this IOpenCqrsServiceBuilder builder, IConfiguration configuration)
 {
     return(AddCosmosSqlStore(builder, configuration, opt => { }));
 }
コード例 #18
0
 public static IOpenCqrsServiceBuilder AddFluentValidation(this IOpenCqrsServiceBuilder builder)
 {
     return(AddFluentValidation(builder, opt => { }));
 }
コード例 #19
0
 public static IOpenCqrsServiceBuilder AddSqliteStore(this IOpenCqrsServiceBuilder builder)
 {
     return(AddSqliteStore(builder, opt => { }));
 }
コード例 #20
0
 public static IOpenCqrsServiceBuilder AddCosmosMongoStore(this IOpenCqrsServiceBuilder builder)
 {
     return(AddCosmosMongoStore(builder, opt => { }));
 }
コード例 #21
0
 public static IOpenCqrsServiceBuilder AddRabbitMQ(this IOpenCqrsServiceBuilder builder)
 {
     return(AddRabbitMQ(builder, opt => { }));
 }