using StickyBoard.Core.DTOs.UsersAndAuth; using StickyBoard.Core.Models; using StickyBoard.Core.Repositories.Base; namespace StickyBoard.Core.Services.UsersAndAuth.Contracts; public interface IUserService { // ------------------------------------------------------------ // SELF // ------------------------------------------------------------ Task GetSelfAsync(Guid userId, CancellationToken ct); // ------------------------------------------------------------ // ADMIN: GET SINGLE USER // ------------------------------------------------------------ Task GetAsync(Guid id, CancellationToken ct); // ------------------------------------------------------------ // SEARCH // ------------------------------------------------------------ Task> SearchAsync(string query, CancellationToken ct); Task> SearchPagedAsync( string query, int limit, int offset, CancellationToken ct); // ------------------------------------------------------------ // SELF: UPDATE PROFILE // ------------------------------------------------------------ Task UpdateProfileAsync(Guid userId, UserUpdateDto dto, CancellationToken ct); // ------------------------------------------------------------ // SELF: CHANGE PASSWORD // ------------------------------------------------------------ Task ChangePasswordAsync(Guid userId, ChangePasswordDto dto, CancellationToken ct); // ------------------------------------------------------------ // ADMIN: UPDATE ROLE // ------------------------------------------------------------ Task UpdateRoleAsync(Guid userId, UserRole role, CancellationToken ct); // ------------------------------------------------------------ // ADMIN: DELETE USER // ------------------------------------------------------------ Task DeleteAsync(Guid userId, CancellationToken ct); // ------------------------------------------------------------ // GROUPS // ------------------------------------------------------------ Task GetGroupsAsync(Guid userId, CancellationToken ct); Task SetGroupsAsync(Guid userId, string[] groups, CancellationToken ct); Task AddGroupsAsync(Guid userId, IEnumerable groups, CancellationToken ct); Task RemoveGroupsAsync(Guid userId, IEnumerable groups, CancellationToken ct); Task RemoveGroupAsync(Guid userId, string group, CancellationToken ct); Task RenameGroupAsync(Guid userId, string oldName, string newName, CancellationToken ct); Task SearchGroupsAsync(Guid userId, string partial, CancellationToken ct); }