using System; using System.Collections.Generic; using System.Threading.Tasks; using DevHive.Data.Models; using DevHive.Data.Repositories.Interfaces; namespace DevHive.Data.Interfaces.Repositories { public interface IUserRepository : IRepository { Task AddFriendToUserAsync(User user, User friend); Task AddLanguageToUserAsync(User user, Language language); Task AddTechnologyToUserAsync(User user, Technology technology); Task GetByUsernameAsync(string username); Language GetUserLanguage(User user, Language language); HashSet GetUserLanguages(User user); HashSet GetUserTechnologies(User user); Technology GetUserTechnology(User user, Technology technology); IEnumerable QueryAll(); Task EditUserLanguageAsync(User user, Language oldLang, Language newLang); Task EditUserTechnologyAsync(User user, Technology oldTech, Technology newTech); Task RemoveFriendAsync(User user, User friend); Task RemoveLanguageFromUserAsync(User user, Language language); Task RemoveTechnologyFromUserAsync(User user, Technology technology); Task DoesEmailExistAsync(string email); Task DoesUserExistAsync(Guid id); Task DoesUserHaveThisFriendAsync(Guid userId, Guid friendId); Task DoesUsernameExistAsync(string username); bool DoesUserHaveThisLanguage(User user, Language language); bool DoesUserHaveThisUsername(Guid id, string username); bool DoesUserHaveFriends(User user); bool DoesUserHaveThisTechnology(User user, Technology technology); } }