Added multiple qol imporvements
This commit is contained in:
27
SpotiParty.Web/Services/CleanupService.cs
Normal file
27
SpotiParty.Web/Services/CleanupService.cs
Normal file
@@ -0,0 +1,27 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace SpotiParty.Web.Services;
|
||||
|
||||
public class CleanupService(IServiceProvider services, ILogger<CleanupService> logger) : BackgroundService {
|
||||
protected override async Task ExecuteAsync(CancellationToken stoppingToken) {
|
||||
while (!stoppingToken.IsCancellationRequested) {
|
||||
await using (var scope = services.CreateAsyncScope()) {
|
||||
var context = scope.ServiceProvider.GetRequiredService<DatabaseContext>();
|
||||
|
||||
var now = DateTime.Now;
|
||||
var oldEvents = await context.Events
|
||||
.Where(e => e.End < now)
|
||||
.ToArrayAsync(stoppingToken);
|
||||
|
||||
context.Events.RemoveRange(oldEvents);
|
||||
await context.SaveChangesAsync(stoppingToken);
|
||||
|
||||
if (oldEvents.Length > 0)
|
||||
logger.LogInformation("Deleted {count} old events", oldEvents.Length);
|
||||
}
|
||||
|
||||
var nextRun = DateTime.Today.AddDays(1).AddHours(3) - DateTime.Now;
|
||||
await Task.Delay(nextRun, stoppingToken);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user