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; }