Implementation of basic PatchComplianceTask. First real iteration, basic/raw asf.
36 lines
895 B
C#
36 lines
895 B
C#
using System;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace OversightService.Services
|
|
{
|
|
/// <summary>
|
|
/// Base interface for scheduled tasks
|
|
/// </summary>
|
|
public interface IScheduledTask
|
|
{
|
|
string TaskName { get; }
|
|
TimeSpan Interval { get; }
|
|
DateTime? LastRun { get; set; }
|
|
Task ExecuteAsync();
|
|
bool ShouldRun();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Base class for scheduled tasks with common logic
|
|
/// </summary>
|
|
public abstract class ScheduledTask : IScheduledTask
|
|
{
|
|
public abstract string TaskName { get; }
|
|
public abstract TimeSpan Interval { get; }
|
|
public DateTime? LastRun { get; set; }
|
|
|
|
public abstract Task ExecuteAsync();
|
|
|
|
public virtual bool ShouldRun()
|
|
{
|
|
if (LastRun == null) return true;
|
|
return DateTime.Now - LastRun >= Interval;
|
|
}
|
|
}
|
|
}
|