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

namespace DigitalData.UserManager.Infrastructure.Contracts
{
    public interface IGroupOfUserRepository : ICRUDRepository<GroupOfUser, int>
    {
        IQueryable<GroupOfUser> ReadByGroupId(int groupId);

        Task<IEnumerable<GroupOfUser>> ReadByGroupUserIdAsync(int groupId, int userId);

        Task<IEnumerable<GroupOfUser>> ReadAllAsyncWithGroup();

        Task<IEnumerable<GroupOfUser>> ReadAllAsyncWithUser();

        Task<IEnumerable<GroupOfUser>> ReadAllAsyncWithGroupAndUser();

        Task<IEnumerable<GroupOfUser>> ReadByUsernameAsync(string username);
    }
}