diff --git a/server/AyaNova/biz/GlobalOpsBackupSettingsBiz.cs b/server/AyaNova/biz/GlobalOpsBackupSettingsBiz.cs index e7157c0f..046db634 100644 --- a/server/AyaNova/biz/GlobalOpsBackupSettingsBiz.cs +++ b/server/AyaNova/biz/GlobalOpsBackupSettingsBiz.cs @@ -67,7 +67,7 @@ namespace AyaNova.Biz //If backup time has changed then reset last backup as well as it might block from taking effect if (putObject.BackupTime.Hour != dbObject.BackupTime.Hour && putObject.BackupTime.Minute != dbObject.BackupTime.Minute) { - putObject.LastBackup = DateTime.MinValue; + ServerGlobalOpsSettingsCache.LastBackup = DateTime.MinValue; } CopyObject.Copy(putObject, dbObject, "Id"); ct.Entry(dbObject).OriginalValues["Concurrency"] = putObject.Concurrency; diff --git a/server/AyaNova/generator/CoreJobBackup.cs b/server/AyaNova/generator/CoreJobBackup.cs index 413b9f8e..f7f2577d 100644 --- a/server/AyaNova/generator/CoreJobBackup.cs +++ b/server/AyaNova/generator/CoreJobBackup.cs @@ -33,7 +33,7 @@ namespace AyaNova.Biz //what time should we backup today? DateTime todayBackupTime = new DateTime(utcNow.Year, utcNow.Month, utcNow.Day, ServerGlobalOpsSettingsCache.Backup.BackupTime.Hour, ServerGlobalOpsSettingsCache.Backup.BackupTime.Minute, 0, DateTimeKind.Utc);//first start with NOW - //Are we there yet? + //Are we there yet? if (utcNow < todayBackupTime) { log.LogTrace("Not past backup time yet"); return;//nope @@ -43,7 +43,7 @@ namespace AyaNova.Biz //Has last backup run more than 24 hours ago? if (ServerGlobalOpsSettingsCache.Backup.LastBackup > utcNow.AddHours(-24)) { - log.LogTrace("Hasn't been 24 hours since last backup yet"); return;//nope//nope, so we have already run today's backup + log.LogTrace("Hasn't been 24 hours since last backup yet"); return;//nope, so we have already run today's backup } //Ok, we're into backup time and it's been more than 24 hours since it last ran so let's do this... } diff --git a/server/AyaNova/models/GlobalOpsBackupSettings.cs b/server/AyaNova/models/GlobalOpsBackupSettings.cs index 53fe0471..6781d5c6 100644 --- a/server/AyaNova/models/GlobalOpsBackupSettings.cs +++ b/server/AyaNova/models/GlobalOpsBackupSettings.cs @@ -8,7 +8,7 @@ namespace AyaNova.Models public uint Concurrency { get; set; } public DateTime BackupTime { get; set; } - public DateTime LastBackup { get; set; } + public int BackupSetsToKeep { get; set; } public bool BackupAttachments { get; set; } @@ -16,7 +16,7 @@ namespace AyaNova.Models { Id = 1;//always 1 BackupTime = new DateTime(2020, 5, 19, 23, 59, 0, DateTimeKind.Local).ToUniversalTime();//date doesn't matter it only uses hour - LastBackup = DateTime.MinValue; + BackupSetsToKeep = 3; } diff --git a/server/AyaNova/util/FileUtil.cs b/server/AyaNova/util/FileUtil.cs index 7027316f..e5948e9d 100644 --- a/server/AyaNova/util/FileUtil.cs +++ b/server/AyaNova/util/FileUtil.cs @@ -119,6 +119,27 @@ namespace AyaNova.Util } + /// + /// Get date of newest backup file or minvalue if not found + /// + /// + /// + internal static DateTime MostRecentBackupFileDate() + { + DateTime LastBackup = DateTime.MinValue; + var BackupPath = UtilityFilesFolder; + foreach (string file in Directory.EnumerateFiles(UtilityFilesFolder, "*.backup")) + { + var ThisFileTime = File.GetCreationTimeUtc(Path.Combine(BackupPath, file)); + if (ThisFileTime > LastBackup) + { + LastBackup = ThisFileTime; + } + } + return LastBackup; + } + + /// /// Confirm if a file exists in the utility folder /// diff --git a/server/AyaNova/util/ServerGlobalOpsSettingsCache.cs b/server/AyaNova/util/ServerGlobalOpsSettingsCache.cs index 45304687..5d5fe574 100644 --- a/server/AyaNova/util/ServerGlobalOpsSettingsCache.cs +++ b/server/AyaNova/util/ServerGlobalOpsSettingsCache.cs @@ -13,6 +13,7 @@ namespace AyaNova.Util { internal static GlobalOpsBackupSettings Backup { get; set; } + internal static DateTime LastBackup { get; set; } /// @@ -27,10 +28,10 @@ namespace AyaNova.Util Backup = new GlobalOpsBackupSettings(); ct.GlobalOpsBackupSettings.Add(Backup); ct.SaveChanges(); - } + } + LastBackup=FileUtil.MostRecentBackupFileDate(); } - }//eoc }//eons \ No newline at end of file