diff --git a/Daybreak.GWCA/CMakeLists.txt b/Daybreak.GWCA/CMakeLists.txt index 6dd38c3f..1db31861 100644 --- a/Daybreak.GWCA/CMakeLists.txt +++ b/Daybreak.GWCA/CMakeLists.txt @@ -11,7 +11,7 @@ endif() set(VERSION_MAJOR 0) set(VERSION_MINOR 9) set(VERSION_PATCH 9) -set(VERSION_TWEAK 47) +set(VERSION_TWEAK 48) set(VERSION_RC "${CMAKE_CURRENT_BINARY_DIR}/version.rc") configure_file("${CMAKE_CURRENT_SOURCE_DIR}/version.rc.in" "${VERSION_RC}" @ONLY) diff --git a/Daybreak.Tests/Daybreak.Tests.csproj b/Daybreak.Tests/Daybreak.Tests.csproj index 4b4de344..f055b24d 100644 --- a/Daybreak.Tests/Daybreak.Tests.csproj +++ b/Daybreak.Tests/Daybreak.Tests.csproj @@ -10,8 +10,8 @@ - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/Daybreak/Configuration/ProjectConfiguration.cs b/Daybreak/Configuration/ProjectConfiguration.cs index 03d656cd..65825660 100644 --- a/Daybreak/Configuration/ProjectConfiguration.cs +++ b/Daybreak/Configuration/ProjectConfiguration.cs @@ -290,6 +290,7 @@ public override void RegisterStartupActions(IStartupActionProducer startupAction startupActionProducer.RegisterAction(); startupActionProducer.RegisterAction(); startupActionProducer.RegisterAction(); + startupActionProducer.RegisterAction(); } public override void RegisterPostUpdateActions(IPostUpdateActionProducer postUpdateActionProducer) @@ -401,6 +402,7 @@ public override void RegisterNotificationHandlers(INotificationHandlerProducer n public override void RegisterMods(IModsManager modsManager) { + modsManager.RegisterMod(); modsManager.RegisterMod(); modsManager.RegisterMod(); modsManager.RegisterMod(); @@ -408,7 +410,6 @@ public override void RegisterMods(IModsManager modsManager) modsManager.RegisterMod(); modsManager.RegisterMod(); modsManager.RegisterMod(singleton: true); - modsManager.RegisterMod(); } public override void RegisterBrowserExtensions(IBrowserExtensionsProducer browserExtensionsProducer) diff --git a/Daybreak/Daybreak.csproj b/Daybreak/Daybreak.csproj index 35b2bdb8..b5a4bfdb 100644 --- a/Daybreak/Daybreak.csproj +++ b/Daybreak/Daybreak.csproj @@ -11,7 +11,7 @@ preview Daybreak.ico true - 0.9.9.47 + 0.9.9.48 true cfb2a489-db80-448d-a969-80270f314c46 True diff --git a/Daybreak/Services/Startup/Actions/CleanupDatabases.cs b/Daybreak/Services/Startup/Actions/CleanupDatabases.cs new file mode 100644 index 00000000..46ea175e --- /dev/null +++ b/Daybreak/Services/Startup/Actions/CleanupDatabases.cs @@ -0,0 +1,60 @@ +using Daybreak.Services.Notifications.Models; +using Daybreak.Services.TradeChat.Models; +using LiteDB; +using Microsoft.Extensions.Logging; +using System.Core.Extensions; +using System.Extensions; +using System.Threading; +using System.Threading.Tasks; + +namespace Daybreak.Services.Startup.Actions; +public sealed class CleanupDatabases : StartupActionBase +{ + private readonly ILiteCollection loggingCollection; + private readonly ILiteCollection quotesCollection; + private readonly ILiteCollection notificationsCollection; + private readonly ILiteCollection traderMessagesCollection; + private readonly ILogger logger; + + public CleanupDatabases( + ILiteCollection loggingCollection, + ILiteCollection quotesCollection, + ILiteCollection notificationsCollection, + ILiteCollection traderMessagesCollection, + ILogger logger) + { + this.loggingCollection = loggingCollection.ThrowIfNull(); + this.quotesCollection = quotesCollection.ThrowIfNull(); + this.notificationsCollection = notificationsCollection.ThrowIfNull(); + this.traderMessagesCollection = traderMessagesCollection.ThrowIfNull(); + this.logger = logger.ThrowIfNull(); + } + + public override void ExecuteOnStartup() + { + var scopedLogger = this.logger.CreateScopedLogger(nameof(this.ExecuteOnStartup), string.Empty); + if (this.loggingCollection.LongCount() > 50000) + { + this.loggingCollection.DeleteAll(); + scopedLogger.LogInformation("Cleared logging database"); + } + + if (this.notificationsCollection.LongCount() > 1000) + { + this.notificationsCollection.DeleteAll(); + scopedLogger.LogInformation("Cleared notifications database"); + } + + if (this.quotesCollection.LongCount() > 1000) + { + this.quotesCollection.DeleteAll(); + scopedLogger.LogInformation("Cleared quotes database"); + } + + if (this.traderMessagesCollection.LongCount() > 1000) + { + this.traderMessagesCollection.DeleteAll(); + scopedLogger.LogInformation("Cleared trader messages database"); + } + } +}