using SVSim.Database.Entities.Guild; namespace SVSim.Database.Repositories.Guild; public interface IGuildRepository { Task GetByIdAsync(int guildId, CancellationToken ct = default); /// Returns guild only if not soft-deleted (BreakupAt is null). Task GetActiveByIdAsync(int guildId, CancellationToken ct = default); /// Returns guild + populated Members list (split-query). Task GetWithMembersAsync(int guildId, CancellationToken ct = default); Task NameExistsAsync(string name, CancellationToken ct = default); Task AddAsync(Entities.Guild.Guild g, CancellationToken ct = default); /// Soft-delete: sets BreakupAt to UtcNow. Caller is responsible for cascading /// hard-deletes on Members / Invites / JoinRequests / ChatMessages. Task MarkBrokenUpAsync(int guildId, DateTime brokenUpAt, CancellationToken ct = default); /// Filtered + bucketed search. Empty name = match-all; activity/joinCondition/bucket = 0 = any. Task> SearchAsync( string name, int activity, int joinCondition, int memberBucket, int maxMemberCap, int resultCap, CancellationToken ct = default); }