mirror of
https://github.com/collinbarrett/FilterLists.git
synced 2026-03-11 09:04:27 +00:00
feat(archival): ✨ add Hangfire scheduling
This commit is contained in:
parent
12d4b2f0ad
commit
b187c33d77
7 changed files with 47 additions and 4 deletions
1
.env
1
.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
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ public static void Configure(IApplicationBuilder app, IWebHostEnvironment env)
|
|||
{
|
||||
if (env.IsDevelopment())
|
||||
app.UseDeveloperExceptionPage();
|
||||
app.UseApplication();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -25,7 +25,10 @@
|
|||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Hangfire.AspNetCore" Version="1.7.12" />
|
||||
<PackageReference Include="HangFire.Redis.StackExchange" Version="1.8.4" />
|
||||
<PackageReference Include="LibGit2Sharp" Version="0.26.2" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.2.0" />
|
||||
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="3.3.0">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
|
|
|
|||
|
|
@ -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<GitOptions>(configuration.GetSection(GitOptions.Key));
|
||||
services.AddTransient<IRepository, Repository>(_ =>
|
||||
|
|
@ -20,6 +20,7 @@ internal static void AddGitServices(this IServiceCollection services, IConfigura
|
|||
|
||||
return new Repository(gitOptions.RepositoryDirectory);
|
||||
});
|
||||
services.AddTransient<IArchiveFile, GitFileArchiver>();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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<IArchiveFile, GitFileArchiver>();
|
||||
services.AddPersistenceServices(configuration);
|
||||
services.AddSchedulingServices(configuration);
|
||||
}
|
||||
|
||||
public static void UseInfrastructure(this IApplicationBuilder app)
|
||||
{
|
||||
app.UseScheduling();
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue