public static IKledexServiceBuilder AddInMemoryProvider(this IKledexServiceBuilder builder, IConfiguration configuration)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

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

            var store         = new InMemoryStore(new VersionService());// todo
            var busdistpacher = new InMemoryBusMessageDispatcher();

            builder.Services
            .AddTransient <IAggregateStore>((sp) => store)
            .AddTransient <ICommandStore>((sp) => store)
            .AddTransient <IEventStore>((sp) => store);

            builder.Services.AddSingleton <IBusMessageDispatcher>((sp) => busdistpacher);
            builder.Services.AddSingleton <IResolver, Resolver>();


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

            return(builder);
        }
        public static IKledexServiceBuilder AddCosmosDbSqlProvider(this IKledexServiceBuilder 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 <IDomainStore, DomainStore>();

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

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

            return(builder);
        }
        public static IKledexServiceBuilder AddCosmosDbMongoDbProvider(this IKledexServiceBuilder 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 <IDomainStore, DomainStore>();

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

            return(builder);
        }
        public static IKledexServiceBuilder AddSqlServerStore(this IKledexServiceBuilder 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.UseSqlServer(dbOptions.ConnectionString));

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

            return(builder);
        }
Exemple #5
0
        public static IKledexServiceBuilder AddCosmosStore(this IKledexServiceBuilder builder, Action <CosmosDbOptions> configureOptions)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

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

            builder.Services.Configure(configureOptions);

            var serviceProvider = builder.Services.BuildServiceProvider();
            var dbOptions       = serviceProvider.GetService <IOptions <CosmosDbOptions> >().Value;

            builder.AddEFStore();

            builder.Services.AddDbContext <DomainDbContext>(options =>
                                                            options.UseCosmos(dbOptions.ServiceEndpoint, dbOptions.AuthKey, dbOptions.DatabaseName));

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

            return(builder);
        }
        public static IKledexServiceBuilder AddEFProvider(this IKledexServiceBuilder builder, IConfiguration configuration)
        {
            builder.Services.Configure <DomainDbConfiguration>(configuration.GetSection(Constants.DomainDbConfigurationSection));

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

            return(builder);
        }
        public static IKledexServiceBuilder AddMemoryCacheProvider(this IKledexServiceBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

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

            return(builder);
        }
Exemple #8
0
        /// <summary>
        /// Adds the service bus provider.
        /// </summary>
        /// <param name="builder">The builder.</param>
        /// <param name="configuration">The configuration.</param>
        /// <returns></returns>
        public static IKledexServiceBuilder AddServiceBusProvider(this IKledexServiceBuilder builder, IConfiguration configuration)
        {
            builder.Services
            .Configure <ServiceBusConfiguration>(configuration.GetSection("ServiceBusConfiguration"));

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

            return(builder);
        }
        public static IKledexServiceBuilder AddEFStore(this IKledexServiceBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

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

            return(builder);
        }
Exemple #10
0
        /// <summary>
        /// Adds the service bus provider.
        /// </summary>
        /// <param name="builder">The builder.</param>
        /// <returns></returns>
        public static IKledexServiceBuilder AddServiceBusProvider(this IKledexServiceBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

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

            return(builder);
        }
Exemple #11
0
        public static IKledexServiceBuilder AddOptions(this IKledexServiceBuilder 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);
        }
        public static IKledexServiceBuilder AddInMemoryProvider(this IKledexServiceBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            builder.AddEFProvider();

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

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

            return(builder);
        }
Exemple #13
0
        public static IKledexServiceBuilder AddFluentValidation(this IKledexServiceBuilder 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);
        }
Exemple #14
0
        public static IKledexServiceBuilder AddMemoryCache(this IKledexServiceBuilder 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);
        }
        /// <summary>
        /// Adds the service bus provider.
        /// </summary>
        /// <param name="builder">The builder.</param>
        /// <param name="setupAction"></param>
        /// <returns></returns>
        public static IKledexServiceBuilder AddUI(this IKledexServiceBuilder builder, Action <UIOptions> setupAction)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

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

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

            builder.Services.Configure(setupAction);

            return(builder);
        }
        /// <summary>
        /// Adds the service bus provider.
        /// </summary>
        /// <param name="builder">The builder.</param>
        /// <returns></returns>
        public static IKledexServiceBuilder AddRabbitMQ(this IKledexServiceBuilder 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);
        }
Exemple #17
0
        public static IKledexServiceBuilder AddRedisCache(this IKledexServiceBuilder 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);
        }
Exemple #18
0
        public static IKledexServiceBuilder AddSqlServerProvider(this IKledexServiceBuilder 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.UseSqlServer(connectionString));

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

            return(builder);
        }
Exemple #19
0
        public static IKledexServiceBuilder AddMySqlProvider(this IKledexServiceBuilder builder, IConfiguration configuration)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

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

            builder.AddEFProvider();

            var connectionString = configuration.GetConnectionString(Consts.DomainStoreConnectionString);

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

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

            return(builder);
        }
        public static IKledexServiceBuilder AddRedisCacheProvider(this IKledexServiceBuilder builder, IConfiguration configuration, int db = -1, object asyncState = null)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

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

            var connectionString = configuration.GetConnectionString("KledexRedisCache");

            if (string.IsNullOrEmpty(connectionString))
            {
                throw new Exception("KledexRedisCache connection string not found.");
            }

            builder.Services.AddSingleton <IConnectionMultiplexer>(x => ConnectionMultiplexer.Connect(connectionString));
            builder.Services.AddSingleton <ICacheProvider>(x => new RedisCacheProvider(x.GetRequiredService <IConnectionMultiplexer>(), db, asyncState));

            return(builder);
        }
Exemple #21
0
        public static IKledexServiceBuilder AddCosmosMongoStore(this IKledexServiceBuilder 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);
        }
Exemple #22
0
 public static IKledexServiceBuilder AddCosmosMongoStore(this IKledexServiceBuilder builder)
 {
     return(AddCosmosMongoStore(builder, opt => { }));
 }
Exemple #23
0
 public static IKledexServiceBuilder AddFluentValidation(this IKledexServiceBuilder builder)
 {
     return(AddFluentValidation(builder, opt => { }));
 }
Exemple #24
0
 public static IKledexServiceBuilder AddCosmosSqlStore(this IKledexServiceBuilder builder, IConfiguration configuration)
 {
     return(AddCosmosSqlStore(builder, configuration, opt => { }));
 }
Exemple #25
0
 public static IKledexServiceBuilder AddServiceBus(this IKledexServiceBuilder builder)
 {
     return(AddServiceBus(builder, opt => { }));
 }
 public static IKledexServiceBuilder AddSqlServerStore(this IKledexServiceBuilder builder)
 {
     return(AddSqlServerStore(builder, opt => { }));
 }
 public static IKledexServiceBuilder AddRabbitMQ(this IKledexServiceBuilder builder)
 {
     return(AddRabbitMQ(builder, opt => { }));
 }
Exemple #28
0
        public static IKledexServiceBuilder AddFluentValidationProvider(this IKledexServiceBuilder builder)
        {
            builder.Services.AddTransient <IValidationProvider, FluentValidationProvider>();

            return(builder);
        }
Exemple #29
0
 public static IKledexServiceBuilder AddCosmosDbMongoDbProvider(this IKledexServiceBuilder builder)
 {
     return(AddCosmosDbMongoDbProvider(builder, opt => { }));
 }
Exemple #30
0
 public static IKledexServiceBuilder AddMemoryCache(this IKledexServiceBuilder builder)
 {
     return(AddMemoryCache(builder, opt => { }));
 }