This commit is contained in:
72
server/util/ServerGlobalOpsSettingsCache.cs
Normal file
72
server/util/ServerGlobalOpsSettingsCache.cs
Normal file
@@ -0,0 +1,72 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using Sockeye.Models;
|
||||
|
||||
namespace Sockeye.Util
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// Contains static mirror copy in memory of Operations related settings stored in db
|
||||
/// that are accessed frequently by server
|
||||
/// </summary>
|
||||
internal static class ServerGlobalOpsSettingsCache
|
||||
{
|
||||
//BOOT flag, set during boot and
|
||||
//is used to control generator from starting
|
||||
internal static bool BOOTING { get; set; }
|
||||
|
||||
//False if db server is detected to be down
|
||||
//is used to control generator from processing
|
||||
internal static bool DBAVAILABLE { get; set; }
|
||||
|
||||
internal static GlobalOpsBackupSettings Backup { get; set; }
|
||||
internal static GlobalOpsNotificationSettings Notify { get; set; }
|
||||
internal static DateTime NextBackup { get; set; }
|
||||
/// <summary>
|
||||
/// Populate and / or create the settings
|
||||
/// </summary>
|
||||
internal static void Initialize(AyContext ct = null)
|
||||
{
|
||||
//fetch or create as not provided (meaning this was called from Startup.cs)
|
||||
Backup = ct.GlobalOpsBackupSettings.FirstOrDefault(z => z.Id == 1);
|
||||
if (Backup == null)
|
||||
{
|
||||
Backup = new GlobalOpsBackupSettings();
|
||||
ct.GlobalOpsBackupSettings.Add(Backup);
|
||||
ct.SaveChanges();
|
||||
}
|
||||
NextBackup = FileUtil.MostRecentAutomatedBackupFileDate();
|
||||
SetNextBackup();
|
||||
|
||||
|
||||
Notify = ct.GlobalOpsNotificationSettings.FirstOrDefault(z => z.Id == 1);
|
||||
if (Notify == null)
|
||||
{
|
||||
Notify = new GlobalOpsNotificationSettings();
|
||||
ct.GlobalOpsNotificationSettings.Add(Notify);
|
||||
ct.SaveChanges();
|
||||
}
|
||||
}
|
||||
|
||||
internal static void SetNextBackup()
|
||||
{
|
||||
DateTime utcNow = DateTime.UtcNow;
|
||||
//Has last backup run more than 24 hours ago?
|
||||
if (NextBackup < utcNow.AddHours(-24))
|
||||
{
|
||||
//set it to today then
|
||||
NextBackup = new DateTime(utcNow.Year, utcNow.Month, utcNow.Day, Backup.BackupTime.Hour, Backup.BackupTime.Minute, 0, DateTimeKind.Utc);
|
||||
//Make sure next backup is in the future
|
||||
if (NextBackup < utcNow)
|
||||
NextBackup = NextBackup.AddDays(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
//less than 24 hours, set it to tomorrow
|
||||
NextBackup = new DateTime(utcNow.Year, utcNow.Month, utcNow.Day, Backup.BackupTime.Hour, Backup.BackupTime.Minute, 0, DateTimeKind.Utc);
|
||||
NextBackup = NextBackup.AddDays(1);
|
||||
}
|
||||
}
|
||||
|
||||
}//eoc
|
||||
}//eons
|
||||
Reference in New Issue
Block a user