diff --git a/commands.config b/commands.config index 63fd985..fe343af 100644 --- a/commands.config +++ b/commands.config @@ -45,3 +45,5 @@ guildrolelist=1 benchmark, bench=1 bethistory=1 crouton=1 +dbstats=1 +dbflush=1 diff --git a/locCommands.config b/locCommands.config index d71456e..5ef2ec1 100644 --- a/locCommands.config +++ b/locCommands.config @@ -20,6 +20,7 @@ perish, thenperish= teey= guildrolelist= stats= +dbstats= beans= eightball, 8ball= catch= @@ -43,6 +44,7 @@ buildHelp= fetch= crouton= invite= +dbflush= shutdown= diff --git a/locStrings.config b/locStrings.config index 14e8611..23c4205 100644 --- a/locStrings.config +++ b/locStrings.config @@ -138,6 +138,9 @@ RatingWarning=Warning: NSFW may slip through, images are only based on tags on t RatingChanged=Kittybot content set to RatingInvalid=Invalid content rating +[CommandDBStats] +DBStatsInfo= + [CommandGiveBeans] GiveBeansNoneMentioned=You didn't mention anyone! GiveBeansSuccess=Gave %s %s beans! @@ -229,6 +232,9 @@ WolframError=Something went wrong! WolframInfo=Will query wolframalpha with your question and give a full image output of the answer WolframNoArgs=You need to provide some arguments! +[CommandDBFlush] +DBFlushInfo= + [CommandMap] MapInfo=Generates a map! You can pass additional information if you want with the flags `-s-w-h`. If one of the fields isn't provided, its default will be used. Note that adjusting the width and height impacts the map outcomes.\n\nDefault seed: Random,\nDefault Width: 35(max %s),\nDefault Height: 25(max %s) MapSeed=Seed diff --git a/src/commands/CommandCrouton.java b/src/commands/CommandCrouton.java index e86d47c..e08821c 100644 --- a/src/commands/CommandCrouton.java +++ b/src/commands/CommandCrouton.java @@ -13,7 +13,7 @@ import dataStructures.KittyUser; import dataStructures.Response; import dataStructures.UserInput; -public class CommandCrouton extends Command +public class CommandCrouton extends Command { public CommandCrouton(KittyRole level, KittyRating rating) { super(level, rating); } diff --git a/src/commands/CommandDBFlush.java b/src/commands/CommandDBFlush.java index b50ccf9..484ac61 100644 --- a/src/commands/CommandDBFlush.java +++ b/src/commands/CommandDBFlush.java @@ -28,7 +28,7 @@ public class CommandDBFlush extends Command KittyEmbed embed = new KittyEmbed(); embed.title = "Database queue flushed"; - embed.descriptionText = "flushed: " + numUpdated; + embed.descriptionText = "**Dirty:** " + numUpdated; embed.color = new Color(7*16, 8*16, 9*16); res.CallEmbed(embed); diff --git a/src/commands/CommandDBStats.java b/src/commands/CommandDBStats.java new file mode 100644 index 0000000..ae8c012 --- /dev/null +++ b/src/commands/CommandDBStats.java @@ -0,0 +1,43 @@ +package commands; + +import java.awt.Color; +import java.text.DateFormat; +import java.text.SimpleDateFormat; + +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 CommandDBStats extends Command +{ + DateFormat dateFormat; + public CommandDBStats(KittyRole level, KittyRating rating) + { + super(level, rating); + dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); + } + + @Override + public String HelpText() { return LocStrings.Stub("DBStatsInfo"); } + + @Override + public void OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res) + { + KittyEmbed embed = new KittyEmbed(); + embed.title = "Database Info"; + embed.descriptionText = "**Tracked Items:** " + DatabaseManager.instance.GetTrackedObjectsSize(); + embed.descriptionText += "\n"; + embed.descriptionText += "**Last Upkeep:** " + dateFormat.format(DatabaseManager.instance.GetLastUpkeep()) + " UTC-7"; + 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 54e4749..638fe2b 100644 --- a/src/core/DatabaseManager.java +++ b/src/core/DatabaseManager.java @@ -1,5 +1,6 @@ package core; +import java.util.Date; import java.util.Vector; import utils.GlobalLog; import utils.LogFilter; @@ -12,6 +13,7 @@ public class DatabaseManager // Private internal variables private Vector trackedObjects; private DatabaseDriver driver; + private Date lastUpkeep; public DatabaseManager() { @@ -27,6 +29,7 @@ public class DatabaseManager return; } + lastUpkeep = new Date(); trackedObjects = new Vector(); driver = new DatabaseDriver(); @@ -57,6 +60,8 @@ public class DatabaseManager } } + lastUpkeep = new Date(); + return numUpdated; } } @@ -85,4 +90,14 @@ public class DatabaseManager driver.CreateSetKey(key, value); } } + + public Date GetLastUpkeep() + { + return lastUpkeep; + } + + public int GetTrackedObjectsSize() + { + return trackedObjects.size(); + } } diff --git a/src/core/ObjectBuilderFactory.java b/src/core/ObjectBuilderFactory.java index 785b2e6..63ffa4c 100644 --- a/src/core/ObjectBuilderFactory.java +++ b/src/core/ObjectBuilderFactory.java @@ -336,6 +336,7 @@ public class ObjectBuilderFactory 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)); + manager.Register(LocCommands.Stub("dbstats"), new CommandDBStats(KittyRole.Dev, KittyRating.Safe)); // Admin manager.Register(LocCommands.Stub("rating"), new CommandRating(KittyRole.Admin, KittyRating.Safe));