-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathFakeDataRefresherService.cs
More file actions
44 lines (36 loc) · 1.88 KB
/
FakeDataRefresherService.cs
File metadata and controls
44 lines (36 loc) · 1.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
using System;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using OpenActive.FakeDatabase.NET;
namespace BookingSystem
{
// Background task
// More information: https://docs.microsoft.com/en-us/dotnet/architecture/microservices/multi-container-microservice-net-applications/background-tasks-with-ihostedservice#implementing-ihostedservice-with-a-custom-hosted-service-class-deriving-from-the-backgroundservice-base-class
public class FakeDataRefresherService : BackgroundService
{
private readonly ILogger<FakeDataRefresherService> _logger;
private readonly AppSettings _settings;
public FakeDataRefresherService(AppSettings settings, ILogger<FakeDataRefresherService> logger)
{
_settings = settings;
_logger = logger;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
_logger.LogDebug($"FakeDataRefresherService is starting..");
stoppingToken.Register(() =>
_logger.LogDebug($"FakeDataRefresherService background task is stopping."));
while (!stoppingToken.IsCancellationRequested)
{
await FakeBookingSystem.FakeDatabase.HardDeletedOldSoftDeletedOccurrencesAndSlots();
_logger.LogDebug($"FakeDataRefresherService hard deleted opportunities that were previously old and soft deleted");
await FakeBookingSystem.FakeDatabase.SoftDeletedPastOpportunitiesAndInsertNewAtEdgeOfWindow();
_logger.LogDebug($"FakeDataRefresherService soft deleted opportunities and inserted new ones at edge of window.");
_logger.LogDebug($"FakeDataRefresherService is finished");
await Task.Delay(_settings.DataRefresherInterval, stoppingToken);
}
}
}
}