Newer
Older
Warehouse / src / WebApi / Program.cs
@Derek Comartin Derek Comartin on 22 Aug 2023 1 KB Init
using MyWarehouse.Infrastructure;
using MyWarehouse.WebApi.Logging;
using System.Reflection;
using MyWarehouse.Application.Products;

namespace MyWarehouse.WebApi;

[ExcludeFromCodeCoverage]
public static class Program
{
    public static void Main(string[] args)
    {
        var builder = WebApplication.CreateBuilder(args);

        builder.Host
            .UseNServiceBus(_ =>
            {
                var endpointConfiguration = new EndpointConfiguration("WarehouseDemo");
                var transport = endpointConfiguration.UseTransport<LearningTransport>();
                endpointConfiguration.UsePersistence<LearningPersistence>();

                var routing = transport.Routing();
                routing.RouteToEndpoint(
                    assembly: typeof(FlashSaleCommand).Assembly,
                    destination: "Demo");

                return endpointConfiguration;
            })
            .AddMySerilogLogging() // Notice: Logging overrides.
            .ConfigureAppConfiguration((context, config) =>
            {
                // ConfigureWebHostDefaults only adds secrets if environment is Develop.
                // This ensures they're always added, for local testing of Production setting.
                config.AddUserSecrets(Assembly.GetEntryAssembly(), optional: true);

                // Notice: Infrastructure hook.
                config.AddMyInfrastructureConfiguration(context);
            });

        var startup = new Startup(builder.Configuration, builder.Environment);

        startup.ConfigureServices(builder.Services);

        var app = builder.Build();

        startup.Configure(app);

        app.Run();
    }
}