using StickyBoard.Core.Models.UsersAndAuth; using StickyBoard.Core.Repositories.Base; namespace StickyBoard.Core.Repositories.UsersAndAuth.Contracts; public interface IUserRepository : IRepository, ISyncRepository { Task GetByEmailAsync(string email, CancellationToken ct); Task EmailExistsAsync(string email, CancellationToken ct); Task> SearchByDisplayNameAsync(string partial, CancellationToken ct); Task> SearchByDisplayNamePagedAsync(string partial, int limit, int offset, CancellationToken ct); Task> GetByIdsAsync(IEnumerable ids, CancellationToken ct); Task> GetByEmailsAsync(IEnumerable emails, CancellationToken ct); // Groups Task GetAllUserGroupsAsync(Guid userId, CancellationToken ct); Task SetUserGroupsAsync(Guid userId, string[] groups, CancellationToken ct); Task AddGroupsAsync(Guid userId, IEnumerable groups, CancellationToken ct); Task RemoveGroupsAsync(Guid userId, IEnumerable groups, CancellationToken ct); Task RenameGroupAsync(Guid userId, string oldName, string newName, CancellationToken ct); Task RemoveGroupAsync(Guid userId, string group, CancellationToken ct); Task> GetUsersByGroupAsync(string group, CancellationToken ct); Task SearchGroupsAsync(Guid userId, string partial, CancellationToken ct); }