using SVSim.Database.Entities.Guild; namespace SVSim.Database.Repositories.Guild; public interface IGuildMemberRepository { Task GetMembershipAsync(long viewerId, CancellationToken ct = default); Task> ListByGuildAsync(int guildId, CancellationToken ct = default); Task CountByGuildAsync(int guildId, CancellationToken ct = default); Task CountByGuildAndRoleAsync(int guildId, GuildRole role, CancellationToken ct = default); Task AddAsync(GuildMember m, CancellationToken ct = default); Task UpdateRoleAsync(int guildId, long viewerId, GuildRole role, CancellationToken ct = default); Task RemoveAsync(int guildId, long viewerId, CancellationToken ct = default); Task DeleteAllForGuildAsync(int guildId, CancellationToken ct = default); /// Returns a count of members per guild for the given guild ids. Used by Task 9 search. Task> CountBatchByGuildIdsAsync(IReadOnlyList guildIds, CancellationToken ct = default); /// /// Batch-checks whether each viewer id in is currently in any guild. /// Returns a set of viewer ids that ARE in a guild. Used by /guild/friend_list to set /// is_join_guild. /// Task> GetViewerIdsInAGuildAsync(IReadOnlyList viewerIds, CancellationToken ct = default); }