Refactoring, database structure changed
This commit is contained in:
38
WatchIt.WebAPI/Repositories/Roles/IRolesRepository.cs
Normal file
38
WatchIt.WebAPI/Repositories/Roles/IRolesRepository.cs
Normal file
@@ -0,0 +1,38 @@
|
||||
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<Role>
|
||||
{
|
||||
Task<bool> ExistsAsync(Guid id);
|
||||
Task<Role?> GetAsync(Guid id, Func<IQueryable<Role>, IQueryable<Role>>? additionalIncludes = null);
|
||||
Task<T?> GetAsync<T>(Guid id, Func<IQueryable<T>, IQueryable<T>>? additionalIncludes = null) where T : Role;
|
||||
Task<IEnumerable<RoleActor>> GetAllActorsAsync(RoleActorFilterQuery filterQuery, OrderQuery orderQuery, PagingQuery pagingQuery, Func<IQueryable<RoleActor>, IQueryable<RoleActor>>? additionalIncludes = null);
|
||||
Task<IEnumerable<RoleCreator>> GetAllCreatorsAsync(RoleCreatorFilterQuery filterQuery, OrderQuery orderQuery, PagingQuery pagingQuery, Func<IQueryable<RoleCreator>, IQueryable<RoleCreator>>? additionalIncludes = null);
|
||||
Task<bool> UpdateAsync<T>(Guid id, Action<T> updateFunc) where T : Role;
|
||||
Task DeleteAsync(Guid id);
|
||||
|
||||
Task<IEnumerable<RoleRating>> GetRoleRatingsAsync(Guid roleId, Func<IQueryable<RoleRating>, IQueryable<RoleRating>>? additionalIncludes = null);
|
||||
Task<RoleRating?> GetRoleRatingByUserAsync(Guid roleId, long accountId, Func<IQueryable<RoleRating>, IQueryable<RoleRating>>? additionalIncludes = null);
|
||||
Task<IEnumerable<RoleRating>> GetPersonRoleRatingsAsync(long personId, Func<IQueryable<RoleRating>, IQueryable<RoleRating>>? additionalIncludes = null);
|
||||
Task<IEnumerable<RoleRating>> GetPersonRoleRatingsByAccountIdAsync(long personId, long accountId, Func<IQueryable<RoleRating>, IQueryable<RoleRating>>? additionalIncludes = null);
|
||||
Task<RoleRating> UpdateOrAddRoleRatingAsync(Guid roleId, long accountId, Func<RoleRating> addFunc, Action<RoleRating> updateFunc);
|
||||
Task DeleteRoleUserRatingAsync(Guid roleId, long accountId);
|
||||
|
||||
Task<bool> ExistsActorTypeAsync(short id);
|
||||
Task<RoleActorType?> GetActorTypeAsync(short id, Func<IQueryable<RoleActorType>, IQueryable<RoleActorType>>? additionalIncludes = null);
|
||||
Task<IEnumerable<RoleActorType>> GetAllActorTypesAsync(RoleActorTypeFilterQuery filterQuery, OrderQuery orderQuery, PagingQuery pagingQuery, Func<IQueryable<RoleActorType>, IQueryable<RoleActorType>>? additionalIncludes = null);
|
||||
Task AddActorTypeAsync(RoleActorType actorType);
|
||||
Task DeleteActorTypeAsync(short id);
|
||||
|
||||
Task<bool> ExistsCreatorTypeAsync(short id);
|
||||
Task<RoleCreatorType?> GetCreatorTypeAsync(short id, Func<IQueryable<RoleCreatorType>, IQueryable<RoleCreatorType>>? additionalIncludes = null);
|
||||
Task<IEnumerable<RoleCreatorType>> GetAllCreatorTypesAsync(RoleCreatorTypeFilterQuery filterQuery, OrderQuery orderQuery, PagingQuery pagingQuery, Func<IQueryable<RoleCreatorType>, IQueryable<RoleCreatorType>>? additionalIncludes = null);
|
||||
Task AddCreatorTypeAsync(RoleCreatorType creatorType);
|
||||
Task DeleteCreatorTypeAsync(short id);
|
||||
}
|
||||
161
WatchIt.WebAPI/Repositories/Roles/RolesRepository.cs
Normal file
161
WatchIt.WebAPI/Repositories/Roles/RolesRepository.cs
Normal file
@@ -0,0 +1,161 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using WatchIt.Database;
|
||||
using WatchIt.Database.Model.Roles;
|
||||
using WatchIt.DTO.Models.Controllers.Roles.Role;
|
||||
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 class RolesRepository : Repository<Role>, IRolesRepository
|
||||
{
|
||||
#region CONSTRUCTORS
|
||||
|
||||
public RolesRepository(DatabaseContext database) : base(database) {}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
#region PUBLIC METHODS
|
||||
|
||||
#region Main
|
||||
|
||||
public async Task<bool> ExistsAsync(Guid id) =>
|
||||
await DefaultSet.AnyAsync(x => x.Id == id);
|
||||
|
||||
public async Task<Role?> GetAsync(Guid id, Func<IQueryable<Role>, IQueryable<Role>>? additionalIncludes = null) =>
|
||||
await DefaultSet.Include(additionalIncludes)
|
||||
.FirstOrDefaultAsync(x => x.Id == id);
|
||||
|
||||
public async Task<T?> GetAsync<T>(Guid id, Func<IQueryable<T>, IQueryable<T>>? additionalIncludes = null) where T : Role =>
|
||||
await DefaultSet.OfType<T>()
|
||||
.Include(additionalIncludes)
|
||||
.FirstOrDefaultAsync(x => x.Id == id);
|
||||
|
||||
public async Task<IEnumerable<RoleActor>> GetAllActorsAsync(RoleActorFilterQuery filterQuery, OrderQuery orderQuery, PagingQuery pagingQuery, Func<IQueryable<RoleActor>, IQueryable<RoleActor>>? additionalIncludes = null) =>
|
||||
await DefaultSet.OfType<RoleActor>()
|
||||
.ApplyFilter(filterQuery)
|
||||
.ApplyOrder(orderQuery, RoleOrderKeys.Base<RoleActor>(), RoleOrderKeys.RoleActor)
|
||||
.ApplyPaging(pagingQuery)
|
||||
.Include(additionalIncludes)
|
||||
.ToListAsync();
|
||||
|
||||
public async Task<IEnumerable<RoleCreator>> GetAllCreatorsAsync(RoleCreatorFilterQuery filterQuery, OrderQuery orderQuery, PagingQuery pagingQuery, Func<IQueryable<RoleCreator>, IQueryable<RoleCreator>>? additionalIncludes = null) =>
|
||||
await DefaultSet.OfType<RoleCreator>()
|
||||
.ApplyFilter(filterQuery)
|
||||
.ApplyOrder(orderQuery, RoleOrderKeys.Base<RoleCreator>(), RoleOrderKeys.RoleCreator)
|
||||
.ApplyPaging(pagingQuery)
|
||||
.Include(additionalIncludes)
|
||||
.ToListAsync();
|
||||
|
||||
public async Task<bool> UpdateAsync<T>(Guid id, Action<T> updateFunc) where T : Role
|
||||
{
|
||||
T? entity = await GetAsync<T>(id);
|
||||
if (entity is null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
updateFunc(entity);
|
||||
DefaultSet.Update(entity);
|
||||
await Database.SaveChangesAsync();
|
||||
return true;
|
||||
}
|
||||
|
||||
public async Task DeleteAsync(Guid id) =>
|
||||
await DeleteAsync(x => x.Id == id);
|
||||
|
||||
#endregion
|
||||
|
||||
#region Rating
|
||||
|
||||
public async Task<IEnumerable<RoleRating>> GetRoleRatingsAsync(Guid roleId, Func<IQueryable<RoleRating>, IQueryable<RoleRating>>? additionalIncludes = null) =>
|
||||
await Database.RoleRatings
|
||||
.Where(x => x.RoleId == roleId)
|
||||
.Include(additionalIncludes)
|
||||
.ToListAsync();
|
||||
|
||||
public async Task<RoleRating?> GetRoleRatingByUserAsync(Guid roleId, long accountId, Func<IQueryable<RoleRating>, IQueryable<RoleRating>>? additionalIncludes = null) =>
|
||||
await Database.RoleRatings
|
||||
.Include(additionalIncludes)
|
||||
.FirstOrDefaultAsync(x => x.RoleId == roleId && x.AccountId == accountId);
|
||||
|
||||
public async Task<IEnumerable<RoleRating>> GetPersonRoleRatingsAsync(long personId, Func<IQueryable<RoleRating>, IQueryable<RoleRating>>? additionalIncludes = null) =>
|
||||
await Database.RoleRatings
|
||||
.Where(x => x.Role.PersonId == personId)
|
||||
.Include(additionalIncludes)
|
||||
.ToListAsync();
|
||||
|
||||
public async Task<IEnumerable<RoleRating>> GetPersonRoleRatingsByAccountIdAsync(long personId, long accountId, Func<IQueryable<RoleRating>, IQueryable<RoleRating>>? additionalIncludes = null) =>
|
||||
await Database.RoleRatings
|
||||
.Where(x => x.Role.PersonId == personId && x.AccountId == accountId)
|
||||
.Include(additionalIncludes)
|
||||
.ToListAsync();
|
||||
|
||||
public async Task<RoleRating> UpdateOrAddRoleRatingAsync(Guid roleId, long accountId, Func<RoleRating> addFunc, Action<RoleRating> updateFunc) =>
|
||||
await UpdateOrAddAsync(await GetRoleRatingByUserAsync(roleId, accountId), addFunc, updateFunc);
|
||||
|
||||
public async Task DeleteRoleUserRatingAsync(Guid roleId, long accountId) =>
|
||||
await DeleteAsync<RoleRating>(x => x.RoleId == roleId && x.AccountId == accountId);
|
||||
|
||||
#endregion
|
||||
|
||||
#region ActorTypes
|
||||
|
||||
public async Task<bool> ExistsActorTypeAsync(short id) =>
|
||||
await Database.RoleActorTypes
|
||||
.AnyAsync(x => x.Id == id);
|
||||
|
||||
public async Task<RoleActorType?> GetActorTypeAsync(short id, Func<IQueryable<RoleActorType>, IQueryable<RoleActorType>>? additionalIncludes = null) =>
|
||||
await Database.RoleActorTypes
|
||||
.Include(additionalIncludes)
|
||||
.FirstOrDefaultAsync(x => x.Id == id);
|
||||
|
||||
public async Task<IEnumerable<RoleActorType>> GetAllActorTypesAsync(RoleActorTypeFilterQuery filterQuery, OrderQuery orderQuery, PagingQuery pagingQuery, Func<IQueryable<RoleActorType>, IQueryable<RoleActorType>>? additionalIncludes = null) =>
|
||||
await Database.RoleActorTypes
|
||||
.ApplyFilter(filterQuery)
|
||||
.ApplyOrder(orderQuery, RoleActorTypeOrderKeys.Base)
|
||||
.ApplyPaging(pagingQuery)
|
||||
.Include(additionalIncludes)
|
||||
.ToListAsync();
|
||||
|
||||
public async Task AddActorTypeAsync(RoleActorType actorType) =>
|
||||
await AddAsync(actorType);
|
||||
|
||||
public async Task DeleteActorTypeAsync(short id) =>
|
||||
await DeleteAsync(new RoleActorType { Id = id });
|
||||
|
||||
#endregion
|
||||
|
||||
#region CreatorTypes
|
||||
|
||||
public async Task<bool> ExistsCreatorTypeAsync(short id) =>
|
||||
await Database.RoleCreatorTypes
|
||||
.AnyAsync(x => x.Id == id);
|
||||
|
||||
public async Task<RoleCreatorType?> GetCreatorTypeAsync(short id, Func<IQueryable<RoleCreatorType>, IQueryable<RoleCreatorType>>? additionalIncludes = null) =>
|
||||
await Database.RoleCreatorTypes
|
||||
.Include(additionalIncludes)
|
||||
.FirstOrDefaultAsync(x => x.Id == id);
|
||||
|
||||
public async Task<IEnumerable<RoleCreatorType>> GetAllCreatorTypesAsync(RoleCreatorTypeFilterQuery filterQuery, OrderQuery orderQuery, PagingQuery pagingQuery, Func<IQueryable<RoleCreatorType>, IQueryable<RoleCreatorType>>? additionalIncludes = null) =>
|
||||
await Database.RoleCreatorTypes
|
||||
.ApplyFilter(filterQuery)
|
||||
.ApplyOrder(orderQuery, RoleCreatorTypeOrderKeys.Base)
|
||||
.ApplyPaging(pagingQuery)
|
||||
.Include(additionalIncludes)
|
||||
.ToListAsync();
|
||||
|
||||
public async Task AddCreatorTypeAsync(RoleCreatorType creatorType) =>
|
||||
await AddAsync(creatorType);
|
||||
|
||||
public async Task DeleteCreatorTypeAsync(short id) =>
|
||||
await DeleteAsync(new RoleCreatorType { Id = id });
|
||||
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
}
|
||||
Reference in New Issue
Block a user