Files
Disco/Disco.Services/Exporting/SavedExportTask.cs
T
Gary Sharp ac24055365 feature: saved exports
initial - not feature complete
2025-02-09 17:14:04 +11:00

43 lines
1.4 KiB
C#

using Disco.Data.Repository;
using Disco.Services.Tasks;
using Quartz;
using System;
namespace Disco.Services.Exporting
{
public class SavedExportTask : ScheduledTask
{
public override string TaskName { get; } = "Saved Export Scheduler";
public override bool SingleInstanceTask { get; } = true;
public override bool CancelInitiallySupported { get; } = false;
public override bool LogExceptionsOnly { get; } = true;
public override void InitalizeScheduledTask(DiscoDataContext Database)
{
// run in 30 seconds, then every hour on the hour
if (DateTime.Now.Minute != 59)
{
var immediateTrigger = TriggerBuilder.Create().StartAt(DateTimeOffset.Now.AddSeconds(30));
ScheduleTask(immediateTrigger);
}
var nextHourTicks = DateTime.UtcNow.Ticks;
nextHourTicks -= nextHourTicks % TimeSpan.TicksPerHour; // round down to the hour
var nextHour = new DateTime(nextHourTicks, DateTimeKind.Utc)
.AddHours(1)
.AddSeconds(1);
var hourlyTrigger = TriggerBuilder.Create()
.StartAt(nextHour)
.WithSchedule(SimpleScheduleBuilder.RepeatHourlyForever());
ScheduleTask(hourlyTrigger);
}
protected override void ExecuteTask()
{
SavedExports.EvaluateSavedExports();
}
}
}