using Microsoft.EntityFrameworkCore; using WatchIt.Database.Model.Accounts; using WatchIt.DTO.Models.Controllers.Accounts.Account; using WatchIt.DTO.Query; namespace WatchIt.WebAPI.Repositories.Accounts; public interface IAccountsRepository : IRepository { Task ExistsAsync(long id); Task GetAsync(long id, Func, IQueryable>? additionalIncludes = null); Task GetByUsernameOrEmailAsync(string usernameOrEmail, Func, IQueryable>? additionalIncludes = null); Task> GetAllAsync(AccountFilterQuery filterQuery, OrderQuery orderQuery, PagingQuery pagingQuery, Func, IQueryable>? additionalIncludes = null); Task GetProfilePictureAsync(long id, Func, IQueryable>? additionalIncludes = null); Task UpdateOrAddProfilePictureAsync(long id, Func addFunc, Action updateFunc); Task DeleteProfilePictureAsync(long id); Task FollowExistsAsync(long followerId, long followedId); Task> GetFollowsAsync(long id, AccountFilterQuery filterQuery, OrderQuery orderQuery, PagingQuery pagingQuery, Func, IQueryable>? additionalIncludes = null); Task> GetFollowersAsync(long id, AccountFilterQuery filterQuery, OrderQuery orderQuery, PagingQuery pagingQuery, Func, IQueryable>? additionalIncludes = null); Task AddFollowAsync(AccountFollow entity); Task DeleteFollowAsync(long followerId, long followedId); Task GetBackgroundPictureAsync(long id, Func, IQueryable>? additionalIncludes = null); Task UpdateOrAddBackgroundPictureAsync(long id, Func addFunc, Action updateFunc); Task DeleteBackgroundPictureAsync(long id); Task UpdateRefreshTokenAsync(AccountRefreshToken refreshToken, Action updateFunc); Task AddRefreshTokenAsync(AccountRefreshToken refreshToken); Task DeleteRefreshTokenAsync(Guid refreshTokenId); Task DeleteUserRefreshTokensAsync(long id); }