feat: shard status update, delete old messages when they expire
This commit is contained in:
parent
8e030acaf3
commit
32732d74d0
9 changed files with 302 additions and 17 deletions
35
Catalogger.Backend/Services/BackgroundTasksService.cs
Normal file
35
Catalogger.Backend/Services/BackgroundTasksService.cs
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
using Catalogger.Backend.Database;
|
||||
using Catalogger.Backend.Database.Queries;
|
||||
|
||||
namespace Catalogger.Backend.Services;
|
||||
|
||||
public class BackgroundTasksService(ILogger logger, IServiceProvider services) : BackgroundService
|
||||
{
|
||||
private readonly ILogger _logger = logger.ForContext<BackgroundTasksService>();
|
||||
|
||||
protected override async Task ExecuteAsync(CancellationToken ct)
|
||||
{
|
||||
using var timer = new PeriodicTimer(TimeSpan.FromMinutes(1));
|
||||
while (await timer.WaitForNextTickAsync(ct))
|
||||
await HandlePeriodicTasksAsync(ct);
|
||||
}
|
||||
|
||||
private async Task HandlePeriodicTasksAsync(CancellationToken ct = default)
|
||||
{
|
||||
_logger.Information("Running once per minute periodic tasks");
|
||||
|
||||
await using var scope = services.CreateAsyncScope();
|
||||
var messageRepository = scope.ServiceProvider.GetRequiredService<MessageRepository>();
|
||||
|
||||
var (msgCount, ignoredCount) = await messageRepository.DeleteExpiredMessagesAsync();
|
||||
if (msgCount != 0 || ignoredCount != 0)
|
||||
{
|
||||
_logger.Information(
|
||||
"Deleted {Count} messages and {IgnoredCount} ignored message IDs older than {MaxDays} days old",
|
||||
msgCount,
|
||||
ignoredCount,
|
||||
MessageRepository.MaxMessageAgeDays
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue