using System.ComponentModel; using System.ComponentModel.DataAnnotations; using API.Workers; namespace API.Controllers.DTOs; /// /// DTO ( ) /// public sealed record PeriodicWorker(string Key, IEnumerable Dependencies, IEnumerable MissingDependencies, bool DependenciesFulfilled, WorkerExecutionState State, DateTime LastExecution, TimeSpan Interval, DateTime NextExecution) : Worker(Key, Dependencies, MissingDependencies, DependenciesFulfilled, State) { /// /// Timestamp when Worker executed last. /// [Required] [Description("Timestamp when Worker executed last.")] public DateTime LastExecution { get; init; } = LastExecution; /// /// Interval at which Worker runs. /// [Required] [Description("Interval at which Worker runs.")] public TimeSpan Interval { get; init; } = Interval; /// /// Timestamp when Worker is scheduled to execute next. /// [Required] [Description("Timestamp when Worker is scheduled to execute next.")] public DateTime NextExecution { get; init; } = LastExecution; }