using System.Linq.Expressions; using WatchIt.Database.Model.Roles; using WatchIt.DTO.Models.Controllers.Roles.Role.Query; using WatchIt.DTO.Models.Controllers.Roles.RoleActorType; using WatchIt.DTO.Models.Controllers.Roles.RoleCreatorType; using WatchIt.DTO.Query; namespace WatchIt.WebAPI.Repositories.Roles; public interface IRolesRepository : IRepository { Task ExistsAsync(Guid id); Task GetAsync(Guid id, Func, IQueryable>? additionalIncludes = null); Task GetAsync(Guid id, Func, IQueryable>? additionalIncludes = null) where T : Role; Task> GetAllActorsAsync(RoleActorFilterQuery filterQuery, OrderQuery orderQuery, PagingQuery pagingQuery, Func, IQueryable>? additionalIncludes = null); Task> GetAllCreatorsAsync(RoleCreatorFilterQuery filterQuery, OrderQuery orderQuery, PagingQuery pagingQuery, Func, IQueryable>? additionalIncludes = null); Task UpdateAsync(Guid id, Action updateFunc) where T : Role; Task DeleteAsync(Guid id); Task> GetRoleRatingsAsync(Guid roleId, Func, IQueryable>? additionalIncludes = null); Task GetRoleRatingByUserAsync(Guid roleId, long accountId, Func, IQueryable>? additionalIncludes = null); Task> GetPersonRoleRatingsAsync(long personId, Func, IQueryable>? additionalIncludes = null); Task> GetPersonRoleRatingsByAccountIdAsync(long personId, long accountId, Func, IQueryable>? additionalIncludes = null); Task UpdateOrAddRoleRatingAsync(Guid roleId, long accountId, Func addFunc, Action updateFunc); Task DeleteRoleUserRatingAsync(Guid roleId, long accountId); Task ExistsActorTypeAsync(short id); Task GetActorTypeAsync(short id, Func, IQueryable>? additionalIncludes = null); Task> GetAllActorTypesAsync(RoleActorTypeFilterQuery filterQuery, OrderQuery orderQuery, PagingQuery pagingQuery, Func, IQueryable>? additionalIncludes = null); Task AddActorTypeAsync(RoleActorType actorType); Task DeleteActorTypeAsync(short id); Task ExistsCreatorTypeAsync(short id); Task GetCreatorTypeAsync(short id, Func, IQueryable>? additionalIncludes = null); Task> GetAllCreatorTypesAsync(RoleCreatorTypeFilterQuery filterQuery, OrderQuery orderQuery, PagingQuery pagingQuery, Func, IQueryable>? additionalIncludes = null); Task AddCreatorTypeAsync(RoleCreatorType creatorType); Task DeleteCreatorTypeAsync(short id); }