private static void AddPersistancy(this IServiceCollection services, ProvisioningBrokerOptions brokerOptions = default) { services.AddDbContext <DomainContext>(options => { var callingAssemblyName = Assembly.GetExecutingAssembly().GetName().Name; var connectionString = brokerOptions?.ConnectionStrings?.GetValue <string>(nameof(DomainContext)); if (string.IsNullOrEmpty(connectionString)) { return; } services.AddSingleton(factory => { var connection = new SqliteConnection(connectionString); connection.Open(); return(connection); }); var dbOptions = options.UseSqlite(services.BuildServiceProvider().GetService <SqliteConnection>(), sqliteOptions => { sqliteOptions.MigrationsAssembly(callingAssemblyName); sqliteOptions.MigrationsHistoryTable(callingAssemblyName + "_MigrationHistory"); }).Options; using var context = new DomainContext(dbOptions, new FakeMediator()); if (!context.Database.EnsureCreated()) { return; } if (brokerOptions.EnableAutoMigrations) { context.Database.Migrate(); } var seedingTask = DomainContextSeeder.SeedAsync(context); seedingTask.Wait(); }); services.AddScoped <IUnitOfWork>(factory => factory.GetRequiredService <DomainContext>()); }
public static void AddProvisioningBroker(this IServiceCollection services, Action <ProvisioningBrokerOptions> configureOptions = default) { var options = new ProvisioningBrokerOptions(); configureOptions?.Invoke(options); services.AddLogging(); services.AddOptions <ProvisioningBrokerOptions>() .Configure(configureOptions); services.AddAutoMapper(Assembly.GetExecutingAssembly()); services.AddMediator(); services.AddTelemetryProviders(); services.AddCommandHandlers(); services.AddEventHandlers(); services.AddPersistancy(options); services.AddRepositories(); services.AddServices(); services.AddBroker(); }
public ProvisioningBroker(IMediator mediator, IControlPlaneService controlPlaneService, IOptions <ProvisioningBrokerOptions> options = default) { _mediator = mediator ?? throw new ArgumentNullException(nameof(mediator)); _controlPlaneService = controlPlaneService ?? throw new ArgumentNullException(nameof(controlPlaneService)); _options = options?.Value; }