Exemplo n.º 1
0
        public static int Main()
        {
            var configuration    = ApplicationSettingsConfigurationProvider.Get();
            var connectionString = configuration.GetConnectionString("Database");

            EnsureDatabase.For.SqlDatabase(connectionString);

            var upgrader = DeployChanges.To
                           .SqlDatabase(connectionString)
                           .WithScriptsEmbeddedInAssembly(Assembly.GetExecutingAssembly())
                           .LogToConsole()
                           .Build();

            var result = upgrader.PerformUpgrade();

            if (!result.Successful)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine(result.Error);
                Console.ResetColor();
#if DEBUG
                Console.ReadLine();
#endif
                return(-1);
            }

            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine("Success!");
            Console.ResetColor();
            return(0);
        }
        public override void ConfigureServices(IServiceCollection serviceCollection)
        {
            var configuration    = ApplicationSettingsConfigurationProvider.Get();
            var rabbitMqSettings = configuration.GetSection("Bus").Get <PublisherRabbitMqSettings>();

            EventsPublisherBuilder
            .Create(serviceCollection)
            .WithSettings(configuration.GetSection("Settings").Get <EventsPublisherSettings>())
            .WithDbContext <MonolithDbContext>()
            .WithTransactionProvider <MonolithDbContext>()
            .WithEventsFromAssemblyOfType <RegistrationPaid>()
            .WithEventsFromAssemblyOfType <LocationAdded>()
            .WithEventsFromAssemblyOfType <ExamPlanned>()
            .WithPersistence(services =>
            {
                services.AddPersistence(
                    configuration.GetConnectionString("Database"),
                    configuration.GetConnectionString("Database"));
                services.TryAddTransient <ISystemTimeProvider, SystemTimeProvider>();
            })
            .ToRabbitMq(rabbitMqSettings)
            .Build();

            serviceCollection.AddHealthChecks()
            .AddSqlServer(configuration.GetConnectionString("Database"))
            .AddRabbitMQ(rabbitConnectionString: RabbitMqConnectionStringBuilder.Build(rabbitMqSettings.Host,
                                                                                       rabbitMqSettings.Username, rabbitMqSettings.Password));
        }
Exemplo n.º 3
0
        public static IServiceProvider Build()
        {
            var applicationSettings = ApplicationSettingsConfigurationProvider.Get();

            var serviceCollection = new ServiceCollection();

            serviceCollection.AddLogging(builder => builder.AddNUnitConsoleOutput());

            serviceCollection.AddSingleton <IConfiguration>(provider => applicationSettings);
            serviceCollection.AddTransient(serviceProvider =>
                                           serviceProvider.GetRequiredService <IConfiguration>().GetSection(ApplicationSettings.Authority).Get <AuthoritySettings>());
            serviceCollection.AddTransient(serviceProvider =>
                                           serviceProvider.GetRequiredService <IConfiguration>().GetSection(ApplicationSettings.Monolith).Get <MonolithApiSettings>());
            serviceCollection.AddTransient <IHttpClientProvider, HttpClientProvider>();

            serviceCollection.AddTransient <Scenarios.Scenarios>();
            serviceCollection.AddTransient <ExamScenarios>();
            serviceCollection.AddTransient <LocationScenarios>();
            serviceCollection.AddTransient <MessageScenarios>();
            serviceCollection.AddTransient <OrderScenarios>();
            serviceCollection.AddTransient <RegistrationScenarios>();
            serviceCollection.AddTransient <SubjectScenarios>();

            serviceCollection.AddHttpClient();
            serviceCollection.AddDomainEvents();
            serviceCollection.AddEventTypeProvider(new ConsumersEventTypeProviderBuilder(new EventNamespaceReader())
                                                   .Build());
            serviceCollection.RegisterRabbitMqPublisher(applicationSettings.GetSection(ApplicationSettings.Bus)
                                                        .Get <PublisherRabbitMqSettings>());

            serviceCollection.AddSnapshots(ApplicationSettings.ConnectionStrings.Database);
            serviceCollection.AddResourceAwaiters(applicationSettings.GetSection(ApplicationSettings.Bus)
                                                  .Get <RabbitMqResourceConfiguration>());

            return(serviceCollection.BuildServiceProvider());
        }
        public override void ConfigureServices(IServiceCollection serviceCollection)
        {
            var configuration    = ApplicationSettingsConfigurationProvider.Get();
            var rabbitMqSettings = configuration.GetSection("Bus").Get <ConsumerRabbitMqSettings>();

            EventsConsumerBuilder
            .Create(serviceCollection)
            .WithHandlersFromAssemblyOfType <OnLocationAdded>()
            .WithServices(services =>
            {
                services.AddPersistence(
                    configuration.GetConnectionString("Database"),
                    configuration.GetConnectionString("Database"));
                services.AddInbox <MonolithDbContext>();
                services.AddMemoryCache();
            })
            .ToRabbitMq(rabbitMqSettings)
            .Build();

            serviceCollection.AddHealthChecks()
            .AddSqlServer(configuration.GetConnectionString("Database"))
            .AddRabbitMQ(rabbitConnectionString: RabbitMqConnectionStringBuilder.Build(rabbitMqSettings.Host,
                                                                                       rabbitMqSettings.Username, rabbitMqSettings.Password));
        }