Newer
Older
Warehouse / src / Infrastructure / InfrastructureStartup.cs
@Derek Comartin Derek Comartin on 22 Aug 2023 1 KB Init
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using System.Diagnostics.CodeAnalysis;
using System.Runtime.CompilerServices;

[assembly: InternalsVisibleTo("MyWarehouse.Infrastructure.UnitTests")]

namespace MyWarehouse.Infrastructure;

// This class implements a rather crude modular configuration of subcomponents, without any ceremony or meta-structure.
// Proper abstractions can be added later if modularization would seem to benefit from them.

[ExcludeFromCodeCoverage]
public static class InfrastructureStartup
{
    public static void AddMyInfrastructureConfiguration(this IConfigurationBuilder configBuilder, HostBuilderContext context)
    {
        //configBuilder.AddJsonFile("infrastructureSettings.json", optional: true);

        AzureKeyVault.Startup.ConfigureAppConfiguration(context, configBuilder);
    }

    public static void AddMyInfrastructureDependencies(this IServiceCollection services, IConfiguration configuration, IHostEnvironment env)
    {
        Identity.Startup.ConfigureServices(services, configuration);
        Authentication.Startup.ConfigureServices(services, configuration);
        Persistence.Startup.ConfigureServices(services, configuration, env);
        ApplicationDependencies.Startup.ConfigureServices(services, configuration);
    }

    public static void UseMyInfrastructure(this IApplicationBuilder app, IConfiguration configuration, IWebHostEnvironment env)
    {
        Authentication.Startup.Configure(app);
        Persistence.Startup.Configure(app, configuration);
    }
}