From b38b3a65686bacb5dd8eb8c0d0bb4154c034e50a Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Tue, 19 May 2020 19:15:56 +0000 Subject: [PATCH] Backup --- server/AyaNova/biz/JobsBiz.cs | 7 ++-- server/AyaNova/generator/CoreJobBackup.cs | 37 +++++++++++++++------- server/AyaNova/models/GlobalOpsSettings.cs | 4 ++- 3 files changed, 33 insertions(+), 15 deletions(-) diff --git a/server/AyaNova/biz/JobsBiz.cs b/server/AyaNova/biz/JobsBiz.cs index 71b08576..3e81836a 100644 --- a/server/AyaNova/biz/JobsBiz.cs +++ b/server/AyaNova/biz/JobsBiz.cs @@ -141,7 +141,7 @@ namespace AyaNova.Biz /// /// internal static async Task AddJobAsync(OpsJob newJob, AyContext ct) - { + { await ct.OpsJob.AddAsync(newJob); await ct.SaveChangesAsync(); return newJob; @@ -372,6 +372,9 @@ namespace AyaNova.Biz return; } + //backup + await CoreJobBackup.DoWorkAsync(ct); + //Notifications } @@ -396,7 +399,7 @@ namespace AyaNova.Biz internal static async Task ProcessJobAsync(OpsJob job, AyContext ct) { var JobDescription = $"{job.Name} {job.JobType.ToString()}"; - if (job.SubType!=JobSubType.NotSet) + if (job.SubType != JobSubType.NotSet) JobDescription += $":{job.SubType}"; log.LogDebug($"ProcessJobAsync -> Processing job {JobDescription}"); diff --git a/server/AyaNova/generator/CoreJobBackup.cs b/server/AyaNova/generator/CoreJobBackup.cs index 786fb3fa..f35a95a5 100644 --- a/server/AyaNova/generator/CoreJobBackup.cs +++ b/server/AyaNova/generator/CoreJobBackup.cs @@ -24,37 +24,50 @@ namespace AyaNova.Biz // public static async Task DoWorkAsync(AyContext ct) { - if (BackupIsRunning) return; //get NOW in utc DateTime utcNow = DateTime.UtcNow; - //what time should we backup today? DateTime todayBackupTime = new DateTime(utcNow.Year, utcNow.Month, utcNow.Day, ServerGlobalOpsSettings.BackupTime.Hour, ServerGlobalOpsSettings.BackupTime.Minute, 0, DateTimeKind.Utc);//first start with NOW - //Are we there yet? if (utcNow < todayBackupTime) return;//nope //Yes, we've passed into the backup window time, but that's also true if we just ran the backup as well so //need to check for that as well... - //Has last backup run more than 24 hours ago? if (ServerGlobalOpsSettings.LastBackup > utcNow.AddHours(-24)) 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... - BackupIsRunning = true; - log.LogTrace("Backup starting"); + try + { + BackupIsRunning = true; + log.LogTrace("Backup starting"); - //************* + //************* + + log.LogInformation("SIMULATED BACKUP RUNNING NOW - TORA TORA TORA!"); + + //*************** - //BACKUP TORA TORA TORA! - //*************** + //Update last backup + var biz = GlobalOpsSettingsBiz.GetBiz(ct); + var OpSet = await biz.GetAsync(false); + OpSet.LastBackup = utcNow; + await biz.ReplaceAsync(OpSet); - //Update last backup - BackupIsRunning = false; - log.LogTrace("Backup completed"); + log.LogTrace("Backup completed"); + } + catch (Exception ex) + { + log.LogError(ex, "BACKUP FAILED!"); + throw ex; + } + finally + { + BackupIsRunning = false; + } } diff --git a/server/AyaNova/models/GlobalOpsSettings.cs b/server/AyaNova/models/GlobalOpsSettings.cs index e382fee0..22419d6e 100644 --- a/server/AyaNova/models/GlobalOpsSettings.cs +++ b/server/AyaNova/models/GlobalOpsSettings.cs @@ -15,7 +15,9 @@ namespace AyaNova.Models public GlobalOpsSettings() { Id = 1;//always 1 - BackupTime = new DateTime(2020, 5, 19, 23, 59, 0, DateTimeKind.Utc);//date doesn't matter it only uses hour + // BackupTime = new DateTime(2020, 5, 19, 23, 59, 0, DateTimeKind.Utc);//date doesn't matter it only uses hour + //testing only, above is the correct one + BackupTime = DateTime.UtcNow.AddMinutes(1); LastBackup = DateTime.MinValue; BackupSetsToKeep = 3;