From c2d817ecb8607c2d01ac9444a0a4514cf2bdbbb1 Mon Sep 17 00:00:00 2001 From: Steven Giesel Date: Fri, 22 Mar 2024 20:53:48 +0100 Subject: [PATCH] feat: Added ability to trigger transformer --- .../Features/Admin/Settings/SettingsPage.razor | 15 +++++++++++++++ src/LinkDotNet.Blog.Web/Program.cs | 1 - .../BackgroundServiceRegistrationExtensions.cs | 3 ++- src/LinkDotNet.Blog.Web/ServiceExtensions.cs | 3 +++ .../Features/Admin/Settings/SettingsPageTests.cs | 2 ++ 5 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/LinkDotNet.Blog.Web/Features/Admin/Settings/SettingsPage.razor b/src/LinkDotNet.Blog.Web/Features/Admin/Settings/SettingsPage.razor index 141e0bdf..b7ce3c20 100644 --- a/src/LinkDotNet.Blog.Web/Features/Admin/Settings/SettingsPage.razor +++ b/src/LinkDotNet.Blog.Web/Features/Admin/Settings/SettingsPage.razor @@ -1,8 +1,10 @@ @page "/settings" @using LinkDotNet.Blog.Web.Features.Services +@using LinkDotNet.NCronJob @inject IOptions ApplicationConfiguration @inject ICacheInvalidator CacheInvalidator @inject IToastService ToastService +@inject IInstantJobRegistry InstantJobRegistry @attribute [Authorize]
@@ -25,6 +27,13 @@ @ApplicationConfiguration.Value.FirstPageCacheDurationInMinutes Minutes + + Run Visit Counter Data Collection + The visit counter data collection is a background job that collects the visit data of the blog posts.
+ The job runs every hour (on the hour). The job can be run on demand. + + +
@@ -35,4 +44,10 @@ CacheInvalidator.Cancel(); ToastService.ShowInfo("Cache was invalidated."); } + + private void RunVisitTransformer() + { + InstantJobRegistry.AddInstantJob(); + ToastService.ShowInfo("Transformer was started."); + } } diff --git a/src/LinkDotNet.Blog.Web/Program.cs b/src/LinkDotNet.Blog.Web/Program.cs index 9be2cbfc..fbadd11f 100644 --- a/src/LinkDotNet.Blog.Web/Program.cs +++ b/src/LinkDotNet.Blog.Web/Program.cs @@ -38,7 +38,6 @@ private static void RegisterServices(WebApplicationBuilder builder) builder.Services.RegisterServices(); builder.Services.AddStorageProvider(builder.Configuration); builder.Services.AddResponseCompression(); - builder.Services.AddBackgroundServices(); builder.Services.AddHealthChecks() .AddCheck("Database"); diff --git a/src/LinkDotNet.Blog.Web/RegistrationExtensions/BackgroundServiceRegistrationExtensions.cs b/src/LinkDotNet.Blog.Web/RegistrationExtensions/BackgroundServiceRegistrationExtensions.cs index 5bc997da..fc1d8f8c 100644 --- a/src/LinkDotNet.Blog.Web/RegistrationExtensions/BackgroundServiceRegistrationExtensions.cs +++ b/src/LinkDotNet.Blog.Web/RegistrationExtensions/BackgroundServiceRegistrationExtensions.cs @@ -1,3 +1,4 @@ +using System; using LinkDotNet.Blog.Web.Features; using LinkDotNet.NCronJob; using Microsoft.Extensions.DependencyInjection; @@ -15,7 +16,7 @@ public static void AddBackgroundServices(this IServiceCollection services) options.ServicesStopConcurrently = true; }); - services.AddNCronJob(); + services.AddNCronJob(p => p.TimerInterval = TimeSpan.FromSeconds(30)); services.AddCronJob(p => p.CronExpression = "* * * * *"); services.AddCronJob(p => p.CronExpression = "0 * * * *"); } diff --git a/src/LinkDotNet.Blog.Web/ServiceExtensions.cs b/src/LinkDotNet.Blog.Web/ServiceExtensions.cs index 71fa3f5a..341799b6 100644 --- a/src/LinkDotNet.Blog.Web/ServiceExtensions.cs +++ b/src/LinkDotNet.Blog.Web/ServiceExtensions.cs @@ -1,6 +1,7 @@ using LinkDotNet.Blog.Web.Features.Admin.BlogPostEditor.Services; using LinkDotNet.Blog.Web.Features.Admin.Sitemap.Services; using LinkDotNet.Blog.Web.Features.Services; +using LinkDotNet.Blog.Web.RegistrationExtensions; using Microsoft.Extensions.DependencyInjection; namespace LinkDotNet.Blog.Web; @@ -19,5 +20,7 @@ public static void RegisterServices(this IServiceCollection services) services.AddSingleton(); services.AddSingleton(s => s.GetRequiredService()); services.AddSingleton(s => s.GetRequiredService()); + + services.AddBackgroundServices(); } } diff --git a/tests/LinkDotNet.Blog.UnitTests/Web/Features/Admin/Settings/SettingsPageTests.cs b/tests/LinkDotNet.Blog.UnitTests/Web/Features/Admin/Settings/SettingsPageTests.cs index 2d93aa10..18ab9219 100644 --- a/tests/LinkDotNet.Blog.UnitTests/Web/Features/Admin/Settings/SettingsPageTests.cs +++ b/tests/LinkDotNet.Blog.UnitTests/Web/Features/Admin/Settings/SettingsPageTests.cs @@ -2,6 +2,7 @@ using LinkDotNet.Blog.Web; using LinkDotNet.Blog.Web.Features.Admin.Settings; using LinkDotNet.Blog.Web.Features.Services; +using LinkDotNet.NCronJob; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; @@ -16,6 +17,7 @@ public void GivenSettingsPage_WhenClicking_InvalidateCacheButton_TokenIsCancelle Services.AddScoped(_ => cacheInvalidator); Services.AddScoped(_ => Options.Create(new())); Services.AddScoped(_ => Substitute.For()); + Services.AddScoped(_ => Substitute.For()); var cut = Render(); var invalidateCacheButton = cut.Find("#invalidate-cache");