Refactor ReadRecActionViewQuery for optional ProfileId

Refactored ReadRecActionViewQuery to remove base class inheritance and make ProfileId optional. Simplified query construction and filtering logic in the handler to conditionally filter by ProfileId only when provided. Removed unused constructors and methods for a cleaner API.
This commit is contained in:
2025-12-15 15:07:26 +01:00
parent 78aaea67e6
commit 4e209e29fc

View File

@@ -8,32 +8,21 @@ using ReC.Application.Common.Dto;
namespace ReC.Application.RecActionViews.Queries; namespace ReC.Application.RecActionViews.Queries;
public record ReadRecActionQueryBase public record ReadRecActionViewQuery : IRequest<IEnumerable<RecActionViewDto>>
{ {
public long ProfileId { get; init; } public long? ProfileId { get; init; } = null;
public ReadRecActionViewQuery ToReadQuery(Action<ReadRecActionViewQuery> modify)
{
ReadRecActionViewQuery query = new(this);
modify(query);
return query;
}
}
public record ReadRecActionViewQuery : ReadRecActionQueryBase, IRequest<IEnumerable<RecActionViewDto>>
{
public ReadRecActionViewQuery(ReadRecActionQueryBase root) : base(root) { }
public bool? Invoked { get; set; } = null; public bool? Invoked { get; set; } = null;
public ReadRecActionViewQuery() { }
} }
public class ReadRecActionViewQueryHandler(IRepository<RecActionView> repo, IMapper mapper) : IRequestHandler<ReadRecActionViewQuery, IEnumerable<RecActionViewDto>> public class ReadRecActionViewQueryHandler(IRepository<RecActionView> repo, IMapper mapper) : IRequestHandler<ReadRecActionViewQuery, IEnumerable<RecActionViewDto>>
{ {
public async Task<IEnumerable<RecActionViewDto>> Handle(ReadRecActionViewQuery request, CancellationToken cancel) public async Task<IEnumerable<RecActionViewDto>> Handle(ReadRecActionViewQuery request, CancellationToken cancel)
{ {
var query = repo.Where(act => act.ProfileId == request.ProfileId); var query = repo.Query;
if (request.ProfileId is long profileId)
query = repo.Where(act => act.ProfileId == profileId);
if (request.Invoked is bool invoked) if (request.Invoked is bool invoked)
query = invoked ? query.Where(act => act.Root!.OutRes != null) : query.Where(act => act.Root!.OutRes == null); query = invoked ? query.Where(act => act.Root!.OutRes != null) : query.Where(act => act.Root!.OutRes == null);