using WatchIt.Database.Model.People; using WatchIt.DTO.Models.Controllers.People.Person.Query; using WatchIt.DTO.Query; namespace WatchIt.WebAPI.Repositories.People; public interface IPeopleRepository : IRepository { Task ExistsAsync(long id); Task GetAsync(long id, Func, IQueryable>? additionalIncludes = null); Task> GetAllAsync(PersonFilterQuery filterQuery, OrderQuery orderQuery, PagingQuery pagingQuery, Func, IQueryable>? additionalIncludes = null); Task UpdateAsync(long id, Action updateFunc, Func, IQueryable>? additionalIncludes = null); Task DeleteAsync(long id); Task UpdateOrAddPersonViewCountAsync(long personId, DateOnly date, Func addFunc, Action updateFunc); Task GetPersonPictureAsync(long id, Func, IQueryable>? additionalIncludes = null); Task UpdateOrAddPersonPictureAsync(long id, Func addFunc, Action updateFunc); Task DeletePersonPictureAsync(long id); Task> GetAllRatedByAccountAsync(long accountId, PersonFilterQuery filterQuery, PersonUserRatedFilterQuery userRatedFilterQuery, OrderQuery orderQuery, PagingQuery pagingQuery, Func, IQueryable>? additionalIncludes = null); }