using API.Schema.NotificationsContext; using Microsoft.EntityFrameworkCore; namespace API.Workers.MaintenanceWorkers; /// /// Removes sent notifications from database /// public class RemoveOldNotificationsWorker(TimeSpan? interval = null, IEnumerable? dependsOn = null) : BaseWorkerWithContext(dependsOn), IPeriodic { public DateTime LastExecution { get; set; } = DateTime.UnixEpoch; public TimeSpan Interval { get; set; } = interval ?? TimeSpan.FromHours(1); protected override async Task DoWorkInternal() { Log.Debug("Removing old notifications..."); List toRemove = await DbContext.Notifications.Where(n => n.IsSent).ToListAsync(CancellationToken); Log.Debug($"Removing {toRemove.Count} old notifications..."); DbContext.RemoveRange(toRemove); if(await DbContext.Sync(CancellationToken) is { success: false } e) Log.Error($"Failed to save database changes: {e.exceptionMessage}"); return []; } }