using MongoDB.Driver;
using Postall.Domain.Entities;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Postall.Domain
{
public interface IUserSocialRepository
{
///
/// Obtém todos os dados sociais dos usuários
///
Task> GetAllAsync();
///
/// Obtém os dados sociais pelo ID do MongoDB
///
Task GetByIdAsync(string id);
///
/// Obtém os dados sociais pelo ID do usuário
///
Task GetByUserIdAsync(string userId);
///
/// Obtém os dados sociais pelo token do Google
///
Task GetByGoogleTokenAsync(string googleToken);
///
/// Adiciona novos dados sociais de usuário
///
Task AddAsync(UserSocialData userSocialData);
///
/// Atualiza os dados sociais de um usuário existente
///
Task UpdateAsync(UserSocialData userSocialData);
///
/// Atualiza ou insere os dados sociais de um usuário
///
Task UpsertAsync(UserSocialData userSocialData);
///
/// Atualiza ou insere os dados sociais de um usuário unico pelo id
///
Task UpdateOneAsync(string userId, UpdateDefinition update);
///
/// Remove os dados sociais pelo ID do MongoDB
///
Task DeleteAsync(string id);
///
/// Remove os dados sociais pelo ID do usuário
///
Task DeleteByUserIdAsync(string userId);
///
/// Atualiza apenas o token do Google para um usuário
///
Task UpdateGoogleTokenAsync(string userId, string googleToken);
///
/// Atualiza apenas o token do Facebook para um usuário
///
Task UpdateFacebookTokenAsync(string userId, FacebookToken facebookToken);
}
}