feat(dir): validate related IDs for new FilterLists

This commit is contained in:
Collin M. Barrett 2021-12-06 11:28:30 -06:00
parent 53985dac58
commit fbd5edbbea
2 changed files with 45 additions and 3 deletions

View file

@ -182,11 +182,19 @@ public record FilterListViewUrl
internal class Validator : AbstractValidator<Command>
{
public Validator(IValidator<Uri?> urlValidator)
public Validator(IValidator<long?> entityIdValidator, IValidator<Uri?> urlValidator)
{
RuleFor(c => c.LicenseId)
.GreaterThan(0)
.When(c => c.LicenseId != null);
.SetValidator(entityIdValidator);
RuleForEach(c => c.SyntaxIds.Select(id => (long?)id))
.SetValidator(entityIdValidator)
.OverridePropertyName(nameof(Command.SyntaxIds));
RuleForEach(c => c.LanguageIds.Select(id => (long?)id))
.SetValidator(entityIdValidator)
.OverridePropertyName(nameof(Command.LanguageIds));
RuleForEach(c => c.TagIds.Select(id => (long?)id))
.SetValidator(entityIdValidator)
.OverridePropertyName(nameof(Command.TagIds));
RuleForEach(c => c.ViewUrls.Select(u => u.Url))
.SetValidator(urlValidator)
.OverridePropertyName(nameof(Command.ViewUrls));
@ -206,6 +214,27 @@ public Validator(IValidator<Uri?> urlValidator)
.SetValidator(urlValidator);
RuleFor(c => c.DonateUrl)
.SetValidator(urlValidator);
RuleForEach(c => c.MaintainerIds.Select(id => (long?)id))
.SetValidator(entityIdValidator)
.OverridePropertyName(nameof(Command.MaintainerIds));
RuleForEach(c => c.UpstreamFilterListIds.Select(id => (long?)id))
.SetValidator(entityIdValidator)
.OverridePropertyName(nameof(Command.UpstreamFilterListIds));
RuleForEach(c => c.ForkFilterListIds.Select(id => (long?)id))
.SetValidator(entityIdValidator)
.OverridePropertyName(nameof(Command.ForkFilterListIds));
RuleForEach(c => c.IncludedInFilterListIds.Select(id => (long?)id))
.SetValidator(entityIdValidator)
.OverridePropertyName(nameof(Command.IncludedInFilterListIds));
RuleForEach(c => c.IncludesFilterListIds.Select(id => (long?)id))
.SetValidator(entityIdValidator)
.OverridePropertyName(nameof(Command.IncludesFilterListIds));
RuleForEach(c => c.DependencyFilterListIds.Select(id => (long?)id))
.SetValidator(entityIdValidator)
.OverridePropertyName(nameof(Command.DependencyFilterListIds));
RuleForEach(c => c.DependentFilterListIds.Select(id => (long?)id))
.SetValidator(entityIdValidator)
.OverridePropertyName(nameof(Command.DependentFilterListIds));
}
}

View file

@ -0,0 +1,13 @@
using FluentValidation;
namespace FilterLists.Directory.Application.Validators;
internal class EntityIdValidator : AbstractValidator<long?>
{
public EntityIdValidator()
{
RuleFor(id => id)
.GreaterThan(0)
.When(id => id is not null);
}
}