aboutsummaryrefslogtreecommitdiff
path: root/src/DevHive.Data/Interfaces/Repositories/IUserRepository.cs
blob: c29669d843fd8142b54dd4eee2e5a08695cc743b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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<User>
	{
		//Read
		Task<User> GetByUsernameAsync(string username);
		Language GetUserLanguage(User user, Language language);
		HashSet<Language> GetUserLanguages(User user);
		HashSet<Technology> GetUserTechnologies(User user);
		Technology GetUserTechnology(User user, Technology technology);
		IEnumerable<User> QueryAll();

		//Validations
		Task<bool> DoesEmailExistAsync(string email);
		Task<bool> DoesUserExistAsync(Guid id);
		Task<bool> DoesUserHaveThisFriendAsync(Guid userId, Guid friendId);
		Task<bool> 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);
	}
}