From 434ff1b46b5be0a27dd6cd1ce16b51b8b4f8fbae Mon Sep 17 00:00:00 2001 From: Matthew Cech Date: Fri, 24 May 2019 00:17:18 -0700 Subject: [PATCH] + Added database flush command --- src/commands/CommandDBFlush.java | 36 ++++++++++++++++++++++++++++++ src/core/DatabaseManager.java | 7 +++++- src/core/ObjectBuilderFactory.java | 6 ++++- 3 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 src/commands/CommandDBFlush.java diff --git a/src/commands/CommandDBFlush.java b/src/commands/CommandDBFlush.java new file mode 100644 index 0000000..b50ccf9 --- /dev/null +++ b/src/commands/CommandDBFlush.java @@ -0,0 +1,36 @@ +package commands; + +import java.awt.Color; + +import core.Command; +import core.DatabaseManager; +import core.LocStrings; +import dataStructures.KittyChannel; +import dataStructures.KittyEmbed; +import dataStructures.KittyGuild; +import dataStructures.KittyRating; +import dataStructures.KittyRole; +import dataStructures.KittyUser; +import dataStructures.Response; +import dataStructures.UserInput; + +public class CommandDBFlush extends Command +{ + public CommandDBFlush(KittyRole level, KittyRating rating) { super(level, rating); } + + @Override + public String HelpText() { return LocStrings.Stub("DBFlushInfo"); } + + @Override + public void OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res) + { + int numUpdated = DatabaseManager.instance.Upkeep(); + + KittyEmbed embed = new KittyEmbed(); + embed.title = "Database queue flushed"; + embed.descriptionText = "flushed: " + numUpdated; + embed.color = new Color(7*16, 8*16, 9*16); + + res.CallEmbed(embed); + } +} diff --git a/src/core/DatabaseManager.java b/src/core/DatabaseManager.java index d8afd5a..54e4749 100644 --- a/src/core/DatabaseManager.java +++ b/src/core/DatabaseManager.java @@ -39,10 +39,12 @@ public class DatabaseManager // Thumbs through registered objects and syncs them with the database. // Consider moving this operation to a separate thread. - public void Upkeep() + public int Upkeep() { synchronized(trackedObjects) { + int numUpdated = 0; + for(int i = 0 ; i < trackedObjects.size(); ++i) { DatabaseTrackedObject dto = trackedObjects.get(i); @@ -51,8 +53,11 @@ public class DatabaseManager { SetRemoteValue(dto.identifier, dto.Serialize()); dto.Resolve(); + ++numUpdated; } } + + return numUpdated; } } diff --git a/src/core/ObjectBuilderFactory.java b/src/core/ObjectBuilderFactory.java index 92aeadb..785b2e6 100644 --- a/src/core/ObjectBuilderFactory.java +++ b/src/core/ObjectBuilderFactory.java @@ -328,22 +328,27 @@ public class ObjectBuilderFactory CommandManager manager = new CommandManager(commandEnabler); + // Dev manager.Register(LocCommands.Stub("work"), new CommandDoWork(KittyRole.Dev, KittyRating.Safe)); manager.Register(LocCommands.Stub("shutdown"), new CommandShutdown(KittyRole.Dev, KittyRating.Safe)); manager.Register(LocCommands.Stub("stats"), new CommandStats(KittyRole.Dev, KittyRating.Safe)); manager.Register(LocCommands.Stub("invite"), new CommandInvite(KittyRole.Dev, KittyRating.Safe)); manager.Register(LocCommands.Stub("buildHelp"), new CommandHelpBuilder(KittyRole.Dev, KittyRating.Safe)); manager.Register(LocCommands.Stub("tweet"), new CommandTweet(KittyRole.Dev, KittyRating.Safe)); + manager.Register(LocCommands.Stub("dbflush"), new CommandDBFlush(KittyRole.Dev, KittyRating.Safe)); + // Admin manager.Register(LocCommands.Stub("rating"), new CommandRating(KittyRole.Admin, KittyRating.Safe)); manager.Register(LocCommands.Stub("indicator"), new CommandChangeIndicator(KittyRole.Admin, KittyRating.Safe)); manager.Register(LocCommands.Stub("guildroleallowed"), new CommandGuildRoleAllowed(KittyRole.Admin, KittyRating.Safe)); manager.Register(LocCommands.Stub("guildrolenotallowed"), new CommandGuildRoleNotAllowed(KittyRole.Admin, KittyRating.Safe)); + // Mod manager.Register(LocCommands.Stub("poll"), new CommandPollManage(KittyRole.Mod, KittyRating.Safe)); manager.Register(LocCommands.Stub("givebeans"), new CommandGiveBeans(KittyRole.Mod, KittyRating.Safe)); manager.Register(LocCommands.Stub("rpg"), new CommandRPG(KittyRole.Mod, KittyRating.Safe)); + // General manager.Register(LocCommands.Stub("fetch"), new CommandFetch(KittyRole.General, KittyRating.Safe)); manager.Register(LocCommands.Stub("guildroleadd"), new CommandGuildRoleAdd(KittyRole.General, KittyRating.Safe)); manager.Register(LocCommands.Stub("guildroleremove"), new CommandGuildRoleRemove(KittyRole.General, KittyRating.Safe)); @@ -375,7 +380,6 @@ public class ObjectBuilderFactory manager.Register(LocCommands.Stub("guildrolelist"), new CommandGuildRoleList(KittyRole.General, KittyRating.Safe)); manager.Register(LocCommands.Stub("bethistory"), new CommandBetHistory(KittyRole.General, KittyRating.Safe)); manager.Register(LocCommands.Stub("crouton"), new CommandCrouton(KittyRole.General, KittyRating.Safe)); - manager.Register(LocCommands.Stub("benchmark, bench"), new CommandBenchmark(KittyRole.General, KittyRating.Safe)); return manager;