refactor(svcs): ♻ migrate to new hosting model

This commit is contained in:
Collin M. Barrett 2021-11-12 15:15:58 -06:00
parent 3efd74b0df
commit 5775cc3274
11 changed files with 57 additions and 118 deletions

View file

@ -1,21 +1,22 @@
using FilterLists.Archival.Application;
using System.Text.Json.Serialization;
using FilterLists.Archival.Application;
using FilterLists.SharedKernel.Logging;
namespace FilterLists.Archival.Api;
var builder = WebApplication.CreateBuilder(args);
public static class Program
{
// TODO: migrate to new hosting model https://docs.microsoft.com/en-us/aspnet/core/migration/50-to-60?view=aspnetcore-6.0&tabs=visual-studio#new-hosting-model
public static Task Main(string[] args)
{
var host = CreateHostBuilder(args).Build();
return host.TryRunWithLoggingAsync();
}
builder.Host.ConfigureApplication();
builder.Services.Configure<RouteOptions>(options => options.LowercaseUrls = true);
builder.Services.AddControllers()
.AddJsonOptions(o => o.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull);
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddApplication(builder.Configuration);
public static IHostBuilder CreateHostBuilder(string[] args)
{
return Host.CreateDefaultBuilder(args)
.UseApplication()
.ConfigureWebHostDefaults(webBuilder => webBuilder.UseStartup<Startup>());
}
}
var app = builder.Build();
app.UseApplication();
app.UseExceptionHandler(app.Environment.IsDevelopment() ? "/error-local-development" : "/error");
app.UseSwagger();
app.MapControllers();
await app.TryRunWithLoggingAsync();

View file

@ -1,32 +0,0 @@
using System.Text.Json.Serialization;
using FilterLists.Archival.Application;
namespace FilterLists.Archival.Api;
internal class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddRouting(o => o.LowercaseUrls = true);
services.AddControllers().AddJsonOptions(o =>
o.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull);
services.AddSwaggerGen();
services.AddApplicationServices(Configuration);
}
public static void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseApplication();
app.UseExceptionHandler(env.IsDevelopment() ? "/error-local-development" : "/error");
app.UseRouting();
app.UseEndpoints(e => e.MapControllers());
app.UseSwagger();
}
}

View file

@ -12,15 +12,15 @@ namespace FilterLists.Archival.Application;
public static class ConfigurationExtensions
{
public static IHostBuilder UseApplication(this IHostBuilder hostBuilder)
public static IHostBuilder ConfigureApplication(this IHostBuilder hostBuilder)
{
return hostBuilder.UseInfrastructure();
return hostBuilder.ConfigureInfrastructure();
}
public static void AddApplicationServices(this IServiceCollection services, IConfiguration configuration)
public static void AddApplication(this IServiceCollection services, IConfiguration configuration)
{
services.AddMediatR(typeof(ConfigurationExtensions).Assembly);
services.AddInfrastructureServices(configuration);
services.AddInfrastructure(configuration);
}
public static void UseApplication(this IApplicationBuilder app)

View file

@ -12,18 +12,18 @@ namespace FilterLists.Archival.Infrastructure;
public static class ConfigurationExtensions
{
public static IHostBuilder UseInfrastructure(this IHostBuilder hostBuilder)
public static IHostBuilder ConfigureInfrastructure(this IHostBuilder hostBuilder)
{
return hostBuilder.UseLogging();
return hostBuilder.ConfigureLogging();
}
public static void AddInfrastructureServices(this IServiceCollection services, IConfiguration configuration)
public static void AddInfrastructure(this IServiceCollection services, IConfiguration configuration)
{
services.AddSharedKernelLogging(configuration);
services.AddSchedulingServices(configuration);
services.AddScheduling(configuration);
services.AddDirectoryApiClient(configuration);
services.AddClients();
services.AddPersistenceServices(configuration);
services.AddPersistence(configuration);
}
public static void UseInfrastructure(this IApplicationBuilder app)

View file

@ -8,7 +8,7 @@ namespace FilterLists.Archival.Infrastructure.Persistence;
internal static class ConfigurationExtensions
{
public static void AddPersistenceServices(this IServiceCollection services, IConfiguration configuration)
public static void AddPersistence(this IServiceCollection services, IConfiguration configuration)
{
services.Configure<GitOptions>(configuration.GetSection(GitOptions.Key));
services.AddTransient<IRepository, Repository>(_ =>

View file

@ -9,7 +9,7 @@ internal static class ConfigurationExtensions
{
private static ConnectionMultiplexer _redis = null!;
public static void AddSchedulingServices(this IServiceCollection services, IConfiguration configuration)
public static void AddScheduling(this IServiceCollection services, IConfiguration configuration)
{
_redis = ConnectionMultiplexer.Connect(configuration.GetConnectionString("SchedulingConnection"));
services.AddHangfire((_, globalConfiguration) => globalConfiguration.UseRedisStorage(_redis).UseMediatR());

View file

@ -1,22 +1,25 @@
using FilterLists.Directory.Application;
using System.Text.Json.Serialization;
using FilterLists.Directory.Api;
using FilterLists.Directory.Application;
using FilterLists.Directory.Infrastructure.Persistence;
using FilterLists.SharedKernel.Logging;
namespace FilterLists.Directory.Api;
var builder = WebApplication.CreateBuilder(args);
public static class Program
{
// TODO: migrate to new hosting model https://docs.microsoft.com/en-us/aspnet/core/migration/50-to-60?view=aspnetcore-6.0&tabs=visual-studio#new-hosting-model
public static Task Main(string[] args)
{
var host = CreateHostBuilder(args).Build();
return host.TryRunWithLoggingAsync(() => host.MigrateAsync());
}
builder.Host.ConfigureApplication();
builder.Services.AddMemoryCache();
builder.Services.Configure<RouteOptions>(options => options.LowercaseUrls = true);
builder.Services.AddControllers()
.AddJsonOptions(o => o.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull);
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddApplication(builder.Configuration);
public static IHostBuilder CreateHostBuilder(string[] args)
{
return Host.CreateDefaultBuilder(args)
.UseApplication()
.ConfigureWebHostDefaults(webBuilder => webBuilder.UseStartup<Startup>());
}
}
var app = builder.Build();
app.UseApplication();
app.UseExceptionHandler(app.Environment.IsDevelopment() ? "/error-local-development" : "/error");
app.UseSwagger();
app.MapControllers();
await app.TryRunWithLoggingAsync(() => app.MigrateAsync());

View file

@ -1,33 +0,0 @@
using System.Text.Json.Serialization;
using FilterLists.Directory.Application;
namespace FilterLists.Directory.Api;
internal class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddMemoryCache();
services.AddRouting(o => o.LowercaseUrls = true);
services.AddControllers().AddJsonOptions(o =>
o.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull);
services.AddSwaggerGen();
services.AddApplicationServices(Configuration);
}
public static void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseApplication();
app.UseExceptionHandler(env.IsDevelopment() ? "/error-local-development" : "/error");
app.UseRouting();
app.UseEndpoints(e => e.MapControllers());
app.UseSwagger();
}
}

View file

@ -9,16 +9,16 @@ namespace FilterLists.Directory.Application;
public static class ConfigurationExtensions
{
public static IHostBuilder UseApplication(this IHostBuilder hostBuilder)
public static IHostBuilder ConfigureApplication(this IHostBuilder hostBuilder)
{
return hostBuilder.UseInfrastructure();
return hostBuilder.ConfigureInfrastructure();
}
public static void AddApplicationServices(this IServiceCollection services, IConfiguration configuration)
public static void AddApplication(this IServiceCollection services, IConfiguration configuration)
{
services.AddMediatR(typeof(ConfigurationExtensions).Assembly);
services.AddAutoMapper(typeof(ConfigurationExtensions).Assembly);
services.AddInfrastructureServices(configuration);
services.AddInfrastructure(configuration);
}
public static void UseApplication(this IApplicationBuilder app)

View file

@ -13,12 +13,12 @@ namespace FilterLists.Directory.Infrastructure;
public static class ConfigurationExtensions
{
public static IHostBuilder UseInfrastructure(this IHostBuilder hostBuilder)
public static IHostBuilder ConfigureInfrastructure(this IHostBuilder hostBuilder)
{
return hostBuilder.UseLogging();
return hostBuilder.ConfigureLogging();
}
public static void AddInfrastructureServices(this IServiceCollection services, IConfiguration configuration)
public static void AddInfrastructure(this IServiceCollection services, IConfiguration configuration)
{
services.AddSharedKernelLogging(configuration);
services.AddDbContextPool<QueryDbContext>(o =>

View file

@ -12,7 +12,7 @@ namespace FilterLists.SharedKernel.Logging;
public static class ConfigurationExtensions
{
public static IHostBuilder UseLogging(this IHostBuilder hostBuilder)
public static IHostBuilder ConfigureLogging(this IHostBuilder hostBuilder)
{
return hostBuilder.UseSerilog();
}