namespace Jellyfin.Plugin.AutoBackup.Configuration;
public class BackupScheduleConfig
{
public Guid Id { get; set; } = Guid.NewGuid();
public string Label { get; set; } = "Schedule";
public bool IsEnabled { get; set; } = true;
public bool BackupDatabase { get; set; } = true;
public bool BackupMetadata { get; set; } = false;
public bool BackupSubtitles { get; set; } = false;
public bool BackupTrickplay { get; set; } = false;
public ScheduleType ScheduleType { get; set; } = ScheduleType.Daily;
/// Used when ScheduleType is EveryNHours.
public int IntervalHours { get; set; } = 24;
/// Used when ScheduleType is EveryNWeeks.
public int IntervalWeeks { get; set; } = 1;
/// Used when ScheduleType is Weekly, EveryNWeeks, or MonthlyOnWeekday.
public DayOfWeek WeekDay { get; set; } = DayOfWeek.Sunday;
/// Used when ScheduleType is MonthlyOnDay (1–28).
public int DayOfMonth { get; set; } = 1;
/// Used when ScheduleType is MonthlyOnWeekday.
public WeekOfMonth WeekOfMonth { get; set; } = WeekOfMonth.First;
/// Hour of day (0–23) for the trigger.
public int TriggerHour { get; set; } = 2;
/// Minute of hour — only 0, 15, 30 or 45 are valid (matches 15-min master task tick).
public int TriggerMinute { get; set; } = 0;
/// Persisted after each successful run to calculate next due time.
public DateTime LastRunUtc { get; set; } = DateTime.MinValue;
}