Skip to content

Commit ba4a38a

Browse files
committed
Add background task to update from sessionize every 30 min
1 parent dd991a4 commit ba4a38a

File tree

2 files changed

+40
-0
lines changed

2 files changed

+40
-0
lines changed

PocketDDD.Server/PocketDDD.Server.WebAPI/Program.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using Microsoft.EntityFrameworkCore;
22
using PocketDDD.Server.DB;
33
using PocketDDD.Server.Services;
4+
using PocketDDD.Server.WebAPI;
45
using PocketDDD.Server.WebAPI.Authentication;
56

67
var corsPolicy = "corsPolicy";
@@ -37,6 +38,8 @@
3738

3839
builder.Services.AddHttpClient<SessionizeService>();
3940

41+
builder.Services.AddHostedService<UpdateFromSessionizeBackgroundService>();
42+
4043
builder.Services.AddAuthentication()
4144
.AddScheme<UserIsRegisteredOptions, UserIsRegisteredAuthHandler>(UserIsRegisteredAuthHandler.SchemeName, null);
4245

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
using PocketDDD.Server.Services;
2+
3+
namespace PocketDDD.Server.WebAPI;
4+
5+
public class UpdateFromSessionizeBackgroundService(
6+
IServiceProvider services,
7+
ILogger<UpdateFromSessionizeBackgroundService> logger)
8+
: BackgroundService
9+
{
10+
private ILogger<UpdateFromSessionizeBackgroundService> Logger { get; } = logger;
11+
private IServiceProvider Services { get; } = services;
12+
13+
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
14+
{
15+
Logger.LogInformation("Update from Sessionize background task started.");
16+
17+
while (!stoppingToken.IsCancellationRequested)
18+
{
19+
Logger.LogInformation("About to update from Sessionize.");
20+
try
21+
{
22+
using var scope = Services.CreateScope();
23+
24+
var sessionizeService = scope.ServiceProvider.GetRequiredService<SessionizeService>();
25+
await sessionizeService.UpdateFromSessionize();
26+
27+
Logger.LogInformation("Update from Sessionize complete.");
28+
}
29+
catch (Exception e)
30+
{
31+
Logger.LogError(e, "Update from Sessionize failed.");
32+
}
33+
34+
await Task.Delay(TimeSpan.FromMinutes(30), stoppingToken);
35+
}
36+
}
37+
}

0 commit comments

Comments
 (0)