using Catalogger.Backend.Database.Models; using Catalogger.Backend.Extensions; using Remora.Rest.Core; namespace Catalogger.Backend.Database.Queries; public static class QueryExtensions { public static async ValueTask GetGuildAsync(this DatabaseContext db, Snowflake id, CancellationToken ct = default) => await db.GetGuildAsync(id.ToUlong(), ct); public static async ValueTask GetGuildAsync(this DatabaseContext db, Optional id, CancellationToken ct = default) => await db.GetGuildAsync(id.ToUlong(), ct); public static async ValueTask GetGuildAsync(this DatabaseContext db, ulong id, CancellationToken ct = default) { var guild = await db.Guilds.FindAsync([id], ct); if (guild == null) throw new CataloggerError("Guild not found, was not initialized during guild create"); return guild; } public static async Task GetWatchlistEntryAsync(this DatabaseContext db, Snowflake guildId, Snowflake userId, CancellationToken ct = default) => await db.Watchlists.FindAsync([guildId.Value, userId.Value], ct); }