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