diff --git a/ProjectLighthouse/Extensions/IRedisCollectionExtensions.cs b/ProjectLighthouse/Extensions/RedisCollectionExtensions.cs similarity index 93% rename from ProjectLighthouse/Extensions/IRedisCollectionExtensions.cs rename to ProjectLighthouse/Extensions/RedisCollectionExtensions.cs index b9384846..a5426d88 100644 --- a/ProjectLighthouse/Extensions/IRedisCollectionExtensions.cs +++ b/ProjectLighthouse/Extensions/RedisCollectionExtensions.cs @@ -5,7 +5,7 @@ using Redis.OM.Searching; namespace LBPUnion.ProjectLighthouse.Extensions; [SuppressMessage("ReSharper", "LoopCanBePartlyConvertedToQuery")] -public static class IRedisCollectionExtensions +public static class RedisCollectionExtensions { public static void DeleteAll(this IRedisCollection collection, Func predicate) { diff --git a/ProjectLighthouse/Extensions/RedisConnectionExtensions.cs b/ProjectLighthouse/Extensions/RedisConnectionExtensions.cs new file mode 100644 index 00000000..9211b5c0 --- /dev/null +++ b/ProjectLighthouse/Extensions/RedisConnectionExtensions.cs @@ -0,0 +1,23 @@ +using System; +using System.Diagnostics; +using System.Threading.Tasks; +using LBPUnion.ProjectLighthouse.Logging; +using Redis.OM; +using Redis.OM.Contracts; + +namespace LBPUnion.ProjectLighthouse.Extensions; + +public static class RedisConnectionExtensions +{ + public static async Task RecreateIndexAsync(this IRedisConnection connection, Type type) + { + Logger.LogDebug("Recreating index for " + type.Name, LogArea.Redis); + + // TODO: use `await connection.DropIndexAndAssociatedRecordsAsync(type);` here instead when that becomes a thing + bool dropped = await connection.DropIndexAsync(type); + Logger.LogDebug("Dropped index: " + dropped, LogArea.Redis); + + bool created = await connection.CreateIndexAsync(type); + Logger.LogDebug("Created index: " + created, LogArea.Redis); + } +} \ No newline at end of file diff --git a/ProjectLighthouse/Redis.cs b/ProjectLighthouse/Redis.cs index 7aa6ab7c..79b53131 100644 --- a/ProjectLighthouse/Redis.cs +++ b/ProjectLighthouse/Redis.cs @@ -4,6 +4,7 @@ using System.Diagnostics; using System.Globalization; using System.Linq; using System.Threading.Tasks; +using LBPUnion.ProjectLighthouse.Extensions; using LBPUnion.ProjectLighthouse.Helpers; using LBPUnion.ProjectLighthouse.Logging; using LBPUnion.ProjectLighthouse.Types; @@ -38,8 +39,8 @@ public static class Redis return; } - await connection.CreateIndexAsync(typeof(Room)); - await connection.CreateIndexAsync(typeof(UserFriendStore)); + await connection.RecreateIndexAsync(typeof(Room)); + await connection.RecreateIndexAsync(typeof(UserFriendStore)); initialized = true; Logger.LogSuccess("Initialized Redis.", LogArea.Redis);