From b187c33d77eb939d7281e3f8f5e7359905aabc35 Mon Sep 17 00:00:00 2001 From: "Collin M. Barrett" Date: Wed, 9 Sep 2020 20:13:33 -0500 Subject: [PATCH] =?UTF-8?q?feat(archival):=20=E2=9C=A8=20add=20Hangfire=20?= =?UTF-8?q?scheduling?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env | 1 + .../src/FilterLists.Archival.Api/Startup.cs | 1 + .../ServiceCollectionExtension.cs | 6 +++++ ...FilterLists.Archival.Infrastructure.csproj | 3 +++ .../Persistence/ServiceCollectionExtension.cs | 5 ++-- .../Scheduling/ServiceCollectionExtension.cs | 24 +++++++++++++++++++ .../ServiceCollectionExtension.cs | 11 +++++++-- 7 files changed, 47 insertions(+), 4 deletions(-) create mode 100644 services/archival/src/FilterLists.Archival.Infrastructure/Scheduling/ServiceCollectionExtension.cs diff --git a/.env b/.env index b3af88f32..be55479d7 100644 --- a/.env +++ b/.env @@ -1,3 +1,4 @@ +ARCHIVAL_SCHEDULING_CONNECTION_STRING=localhost ARCHIVAL_GIT_REPOSITORY_DIRECTORY=archives ARCHIVAL_GIT_USER_NAME=FilterLists Archival ARCHIVAL_GIT_USER_EMAIL=noreply@filterlists.com diff --git a/services/archival/src/FilterLists.Archival.Api/Startup.cs b/services/archival/src/FilterLists.Archival.Api/Startup.cs index 745257d05..78e7ad22b 100644 --- a/services/archival/src/FilterLists.Archival.Api/Startup.cs +++ b/services/archival/src/FilterLists.Archival.Api/Startup.cs @@ -25,6 +25,7 @@ public static void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) app.UseDeveloperExceptionPage(); + app.UseApplication(); } } } \ No newline at end of file diff --git a/services/archival/src/FilterLists.Archival.Application/ServiceCollectionExtension.cs b/services/archival/src/FilterLists.Archival.Application/ServiceCollectionExtension.cs index 6cc9a52cb..951374300 100644 --- a/services/archival/src/FilterLists.Archival.Application/ServiceCollectionExtension.cs +++ b/services/archival/src/FilterLists.Archival.Application/ServiceCollectionExtension.cs @@ -1,5 +1,6 @@ using FilterLists.Archival.Infrastructure; using MediatR; +using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -12,5 +13,10 @@ public static void AddApplicationServices(this IServiceCollection services, ICon services.AddMediatR(typeof(ServiceCollectionExtension).Assembly); services.AddInfrastructureServices(configuration); } + + public static void UseApplication(this IApplicationBuilder app) + { + app.UseInfrastructure(); + } } } \ No newline at end of file diff --git a/services/archival/src/FilterLists.Archival.Infrastructure/FilterLists.Archival.Infrastructure.csproj b/services/archival/src/FilterLists.Archival.Infrastructure/FilterLists.Archival.Infrastructure.csproj index 234e53157..353cc498d 100644 --- a/services/archival/src/FilterLists.Archival.Infrastructure/FilterLists.Archival.Infrastructure.csproj +++ b/services/archival/src/FilterLists.Archival.Infrastructure/FilterLists.Archival.Infrastructure.csproj @@ -25,7 +25,10 @@ + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/services/archival/src/FilterLists.Archival.Infrastructure/Persistence/ServiceCollectionExtension.cs b/services/archival/src/FilterLists.Archival.Infrastructure/Persistence/ServiceCollectionExtension.cs index 475d4dce4..64316d5bb 100644 --- a/services/archival/src/FilterLists.Archival.Infrastructure/Persistence/ServiceCollectionExtension.cs +++ b/services/archival/src/FilterLists.Archival.Infrastructure/Persistence/ServiceCollectionExtension.cs @@ -5,9 +5,9 @@ namespace FilterLists.Archival.Infrastructure.Persistence { - public static class ServiceCollectionExtension + internal static class ServiceCollectionExtension { - internal static void AddGitServices(this IServiceCollection services, IConfiguration configuration) + public static void AddPersistenceServices(this IServiceCollection services, IConfiguration configuration) { services.Configure(configuration.GetSection(GitOptions.Key)); services.AddTransient(_ => @@ -20,6 +20,7 @@ internal static void AddGitServices(this IServiceCollection services, IConfigura return new Repository(gitOptions.RepositoryDirectory); }); + services.AddTransient(); } } } \ No newline at end of file diff --git a/services/archival/src/FilterLists.Archival.Infrastructure/Scheduling/ServiceCollectionExtension.cs b/services/archival/src/FilterLists.Archival.Infrastructure/Scheduling/ServiceCollectionExtension.cs new file mode 100644 index 000000000..82ab1a1cd --- /dev/null +++ b/services/archival/src/FilterLists.Archival.Infrastructure/Scheduling/ServiceCollectionExtension.cs @@ -0,0 +1,24 @@ +using Hangfire; +using Microsoft.AspNetCore.Builder; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using StackExchange.Redis; + +namespace FilterLists.Archival.Infrastructure.Scheduling +{ + internal static class ServiceCollectionExtension + { + private static ConnectionMultiplexer _redis = null!; + + public static void AddSchedulingServices(this IServiceCollection services, IConfiguration configuration) + { + _redis = ConnectionMultiplexer.Connect(configuration.GetConnectionString("SchedulingConnection")); + services.AddHangfire(c => c.UseRedisStorage(_redis)); + } + + public static void UseScheduling(this IApplicationBuilder app) + { + app.UseHangfireServer(); + } + } +} \ No newline at end of file diff --git a/services/archival/src/FilterLists.Archival.Infrastructure/ServiceCollectionExtension.cs b/services/archival/src/FilterLists.Archival.Infrastructure/ServiceCollectionExtension.cs index a0a3ff86c..bdc6e6a21 100644 --- a/services/archival/src/FilterLists.Archival.Infrastructure/ServiceCollectionExtension.cs +++ b/services/archival/src/FilterLists.Archival.Infrastructure/ServiceCollectionExtension.cs @@ -1,5 +1,7 @@ using System; using FilterLists.Archival.Infrastructure.Persistence; +using FilterLists.Archival.Infrastructure.Scheduling; +using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -11,8 +13,13 @@ public static void AddInfrastructureServices(this IServiceCollection services, I { _ = configuration ?? throw new ArgumentNullException(nameof(configuration)); - services.AddGitServices(configuration); - services.AddTransient(); + services.AddPersistenceServices(configuration); + services.AddSchedulingServices(configuration); + } + + public static void UseInfrastructure(this IApplicationBuilder app) + { + app.UseScheduling(); } } } \ No newline at end of file