MVCPostall/Postall.Domain/Contracts/Repositories/IUserSocialRepository.cs
2025-03-25 12:04:44 -03:00

70 lines
2.2 KiB
C#

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