public static IBareBonesBuilder AddMessageOutbox(this IBareBonesBuilder builder, Action <IMessageOutboxBuilder> outboxConfigurar, string sectionName = SectionName) { if (string.IsNullOrWhiteSpace(sectionName)) { sectionName = SectionName; } builder.RegisterModule <OutboxModule>(); var options = builder.Configuration.GetOptions <OutboxOptions>(sectionName); builder.Services.AddSingleton(options); var outboxBuilder = new MessageOutboxBuilder(builder, options); if (outboxConfigurar is null) { outboxBuilder.AddInMemory(); } else { outboxConfigurar(outboxBuilder); } if (!options.Enabled) { return(builder); } builder.Services.AddHostedService <OutboxHostedService>(); return(builder); }
public static IBareBonesBuilder AddOrderingDbContext(this IBareBonesBuilder builder, IConfiguration configuration) { return(builder.AddDbContext <OrderingDbContext>(entityFramework => { entityFramework .UseOptions(options => { options.UseSqlServer(configuration.GetConnectionString("OrderingDb"), sqlOptions => { sqlOptions.MigrationsAssembly(typeof(Startup).GetTypeInfo().Assembly.GetName().Name); sqlOptions.EnableRetryOnFailure(maxRetryCount: 15, maxRetryDelay: TimeSpan.FromSeconds(30), errorNumbersToAdd: null); }); }) .AddMigrator() .AddDataSeeder <OrderingDbDataSeeder>() .AddDataSeeder <OrderingDbDataSeeder>(seeder => { seeder.AddDbDataProvider <IEnumerable <OrderStatus>, PredefinedOrderStatusDataProvider>(); if (configuration.GetValue <bool>("DataSeeding:UseCustomizationData")) { seeder.AddDbDataProvider(new JsonLineFileDbDataProvider <CardType>(Path.Combine("Data", "CardTypes.json"))); } else { seeder.AddDbDataProvider <IEnumerable <CardType>, PredefinedCardTypeDataProvider>(); } }); })); }
public static TModel GetOptions <TModel>(this IBareBonesBuilder builder, string settingsSectionName) where TModel : new() { using var serviceProvider = builder.Services.BuildServiceProvider(); var configuration = serviceProvider.GetService <IConfiguration>(); return(configuration.GetOptions <TModel>(settingsSectionName)); }
public static IBareBonesBuilder AddDbContext <TDbContext>(this IBareBonesBuilder builder, Action <BareBonesEntityFrameworkBuilder <TDbContext> > action) where TDbContext : DbContext { var efBuilder = new BareBonesEntityFrameworkBuilder <TDbContext>(builder); action?.Invoke(efBuilder); return(builder); }
public static IBareBonesBuilder AddCommandGateway(this IBareBonesBuilder builder, Action <ICommandGatewayBuilder> gateway) { builder.Services.AddSingleton <ICommandGateway, CommandGateway>(); builder.Services.AddScoped <ICommandGatewayFiltersExecutor, CommandGatewayFiltersExecutor>(); var gatewayBuilder = new CommandGatewayBuilder(builder); gateway?.Invoke(gatewayBuilder); builder.Services.AddSingleton <ICommandGatewayBuilder>(gatewayBuilder); return(builder.RegisterModule <ICommandGateway>()); }
public static IBareBonesBuilder AddCommandDispatcher(this IBareBonesBuilder builder, Action <ICommandDispatcherBuilder> dispatcher) { builder.Services.AddSingleton <ICommandDispatcher, CommandDispatcher>(); builder.Services.AddScoped <IDispatchFiltersExecutor, DispatchFiltersExecutor>(); var commandDispatcherBuilder = new CommandDispatcherBuilder(builder); commandDispatcherBuilder.AddInProcessDispatcher(); dispatcher?.Invoke(commandDispatcherBuilder); builder.Services.AddSingleton <ICommandDispatcherBuilder>(commandDispatcherBuilder); return(builder.RegisterModule <ICommandDispatcher>()); }
public static IBareBonesBuilder AddQueryGateway(this IBareBonesBuilder builder) { builder.Services.AddSingleton <IQueryGateway, QueryGateway>(); builder.Services.Scan(selector => selector.FromAssemblies(AppDomain.CurrentDomain.GetAssemblies()) .AddClasses(c => c.AssignableTo(typeof(IQueryHandler <,>))) .AsImplementedInterfaces() .WithTransientLifetime() .AddClasses(c => c.AssignableTo(typeof(IQueryHandlerFilter))) .AsImplementedInterfaces() .WithTransientLifetime()); return(builder.RegisterModule <IQueryGateway>()); }
public MessageOutboxBuilder(IBareBonesBuilder builder, OutboxOptions options) { Builder = builder; Options = options; }
public CommandGatewayBuilder(IBareBonesBuilder builder) { _builder = builder; }
public CommandDispatcherBuilder(IBareBonesBuilder builder) { _builder = builder; }
public DataSeederBuilder(IBareBonesBuilder builder) { _builder = builder; }
public BareBonesEntityFrameworkBuilder(IBareBonesBuilder builder) { _builder = builder; }