Exemplo n.º 1
0
        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>());
        }
Exemplo n.º 2
0
        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();
        }
Exemplo n.º 3
0
 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;
 }