diff --git a/ProjectLighthouse/Administration/Maintenance/Commands/FlushRedisCommand.cs b/ProjectLighthouse/Administration/Maintenance/Commands/FlushRedisCommand.cs new file mode 100644 index 00000000..85fde257 --- /dev/null +++ b/ProjectLighthouse/Administration/Maintenance/Commands/FlushRedisCommand.cs @@ -0,0 +1,20 @@ +using System.Threading.Tasks; +using LBPUnion.ProjectLighthouse.Logging; +using LBPUnion.ProjectLighthouse.StorableLists; + +namespace LBPUnion.ProjectLighthouse.Administration.Maintenance.Commands; + +public class FlushRedisCommand : ICommand +{ + public string Name() => "Flush Redis"; + public string[] Aliases() => new[] { + "flush", "flush-redis", + }; + public string Arguments() => ""; + public int RequiredArgs() => 0; + + public async Task Run(string[] args, Logger logger) + { + await RedisDatabase.FlushAll(); + } +} \ No newline at end of file diff --git a/ProjectLighthouse/StorableLists/RedisDatabase.cs b/ProjectLighthouse/StorableLists/RedisDatabase.cs index f97b127d..6910aec0 100644 --- a/ProjectLighthouse/StorableLists/RedisDatabase.cs +++ b/ProjectLighthouse/StorableLists/RedisDatabase.cs @@ -39,8 +39,7 @@ public static class RedisDatabase return; } - await connection.RecreateIndexAsync(typeof(Room)); - await connection.RecreateIndexAsync(typeof(UserFriendData)); + await createIndexes(connection); } catch(Exception e) { @@ -52,6 +51,20 @@ public static class RedisDatabase Logger.Success("Initialized Redis.", LogArea.Redis); } + public static async Task FlushAll() + { + IRedisConnection connection = getConnection(); + await connection.ExecuteAsync("FLUSHALL"); + + await createIndexes(connection); + } + + private static async Task createIndexes(IRedisConnection connection) + { + await connection.RecreateIndexAsync(typeof(Room)); + await connection.RecreateIndexAsync(typeof(UserFriendData)); + } + private static IRedisConnection getConnection() { Logger.Debug("Getting a Redis connection", LogArea.Redis);