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