32 lines
1006 B
C#
32 lines
1006 B
C#
using QuestShare.Server.Models;
|
|
|
|
namespace QuestShare.Server.Managers
|
|
{
|
|
public class CleanupManager
|
|
{
|
|
// Cleans up old database entries
|
|
private static int CleanupTimeMinutes = 60;
|
|
private static Timer Timer = null!;
|
|
|
|
public void Initialize()
|
|
{
|
|
// Set up a timer to run every hour
|
|
Timer = new Timer(new TimerCallback(CleanupTask), dueTime: 1000, period: CleanupTimeMinutes*60*1000, state: null);
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
Timer.Dispose();
|
|
}
|
|
|
|
private static void CleanupTask(object? timerState)
|
|
{
|
|
using var shareContext = new QuestShareContext();
|
|
var toDelete = shareContext.Shares.Where(s => s.LastUpdated < DateTime.Now.AddMinutes(-CleanupTimeMinutes)).ToList();
|
|
Console.WriteLine($"Deleting {toDelete.Count} old shares.");
|
|
shareContext.Shares.RemoveRange(toDelete);
|
|
shareContext.SaveChanges();
|
|
}
|
|
}
|
|
}
|