From fd5b7959c5a52f5ec3883002ca07c78936a8047e Mon Sep 17 00:00:00 2001 From: Toastie <toastie@toastiet0ast.com> Date: Mon, 3 Feb 2025 15:23:46 +1300 Subject: [PATCH] Improve GuildConfig handling and initialization in DbExtensions --- src/EllieBot/Db/Extensions/DbExtensions.cs | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/EllieBot/Db/Extensions/DbExtensions.cs b/src/EllieBot/Db/Extensions/DbExtensions.cs index 7541918..ae95155 100644 --- a/src/EllieBot/Db/Extensions/DbExtensions.cs +++ b/src/EllieBot/Db/Extensions/DbExtensions.cs @@ -31,6 +31,7 @@ public static class DbExtensions { ctx.Add(gfc = new GuildFilterConfig() { + GuildId = guildId }); } @@ -40,9 +41,23 @@ public static class DbExtensions public static GuildConfig GuildConfigsForId( this DbContext ctx, ulong guildId, - Func<IQueryable<GuildConfig>, IQueryable<GuildConfig>> set) + Func<IQueryable<GuildConfig>, IQueryable<GuildConfig>> includes = default) { - var query = ctx.Set<GuildConfig>().Where(gc => gc.GuildId == guildId); - return query.FirstOrDefault(); + includes ??= static set => set; + + var gc = includes(ctx.Set<GuildConfig>() + .Where(gc => gc.GuildId == guildId)) + .FirstOrDefault(); + + if (gc is null) + { + ctx.Add(gc = new GuildConfig() + { + GuildId = guildId, + Permissions = [] + }); + } + + return gc; } } \ No newline at end of file