using DigitalData.Core.Abstractions.Infrastructure;
using DigitalData.UserManager.Domain.Entities;

namespace DigitalData.UserManager.Infrastructure.Contracts
{
    public interface IUserRepository : ICRUDRepository<User, int>
    {
        Task<IEnumerable<User>> ReadByModuleIdAsync(int moduleId);

        Task<IEnumerable<User>> ReadUnassignedByModuleIdAsync(int moduleId);

        Task<IEnumerable<User>> ReadByGroupIdAsync(int groupId);

        Task<IEnumerable<User>> ReadUnassignedByGroupIdAsync(int groupId);

        Task<User?> ReadByUsernameAsync(string username);
    }
}