constellation-api/CH.Dal/Validators/DbEntityExistValidator.cs

25 lines
683 B
C#

using CH.Dal.Abstractions;
using FluentValidation;
using Microsoft.EntityFrameworkCore;
namespace CH.Dal.Validators;
public class DbEntityExistValidator<TEntity, TValue> : AbstractValidator<TValue>
where TEntity : class, IHasId<TValue>
{
private readonly CHDbContext _dbContext;
public DbEntityExistValidator(CHDbContext dbContext)
{
_dbContext = dbContext;
RuleFor(value => value)
.NotNull()
.MustAsync(IsEntityExist)
.WithMessage("Invalid Entity");
}
private Task<bool> IsEntityExist(TValue id,
CancellationToken cancellationToken)
=> _dbContext.Set<TEntity>().AnyAsync(entity => entity.Id!.Equals(id), cancellationToken);
}