Add AnyResultViewQuery to check for matching ResultView
Introduced AnyResultViewQuery and its handler to determine if any ResultView entity exists matching optional filters (Id, ActionId, ProfileId, BatchId). The handler builds the query dynamically and uses AnyAsync for efficient existence checks.
This commit is contained in:
35
src/ReC.Application/Results/Queries/AnyResultViewQuery.cs
Normal file
35
src/ReC.Application/Results/Queries/AnyResultViewQuery.cs
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
using DigitalData.Core.Abstraction.Application.Repository;
|
||||||
|
using MediatR;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using ReC.Domain.Views;
|
||||||
|
|
||||||
|
namespace ReC.Application.Results.Queries;
|
||||||
|
|
||||||
|
public record AnyResultViewQuery(
|
||||||
|
long? Id = null,
|
||||||
|
long? ActionId = null,
|
||||||
|
long? ProfileId = null,
|
||||||
|
string? BatchId = null
|
||||||
|
) : IRequest<bool>;
|
||||||
|
|
||||||
|
public class AnyResultViewQueryHandler(IRepository<ResultView> repo) : IRequestHandler<AnyResultViewQuery, bool>
|
||||||
|
{
|
||||||
|
public Task<bool> Handle(AnyResultViewQuery request, CancellationToken cancel)
|
||||||
|
{
|
||||||
|
var q = repo.Query;
|
||||||
|
|
||||||
|
if(request.Id is long id)
|
||||||
|
q = q.Where(rv => rv.Id == id);
|
||||||
|
|
||||||
|
if(request.ActionId is long actionId)
|
||||||
|
q = q.Where(rv => rv.ActionId == actionId);
|
||||||
|
|
||||||
|
if(request.ProfileId is long profileId)
|
||||||
|
q = q.Where(rv => rv.ProfileId == profileId);
|
||||||
|
|
||||||
|
if(request.BatchId is string batchId)
|
||||||
|
q = q.Where(rv => rv.BatchId == batchId);
|
||||||
|
|
||||||
|
return q.AnyAsync(cancel);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user