From fbd5edbbeab0567b8351cd9433829a8cc4933435 Mon Sep 17 00:00:00 2001 From: "Collin M. Barrett" Date: Mon, 6 Dec 2021 11:28:30 -0600 Subject: [PATCH] =?UTF-8?q?feat(dir):=20=E2=9C=A8=20validate=20related=20I?= =?UTF-8?q?Ds=20for=20new=20FilterLists?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Commands/CreateList.cs | 35 +++++++++++++++++-- .../Validators/EntityIdValidator.cs | 13 +++++++ 2 files changed, 45 insertions(+), 3 deletions(-) create mode 100644 services/Directory/FilterLists.Directory.Application/Validators/EntityIdValidator.cs diff --git a/services/Directory/FilterLists.Directory.Application/Commands/CreateList.cs b/services/Directory/FilterLists.Directory.Application/Commands/CreateList.cs index ed2dfcc3e..38d453195 100644 --- a/services/Directory/FilterLists.Directory.Application/Commands/CreateList.cs +++ b/services/Directory/FilterLists.Directory.Application/Commands/CreateList.cs @@ -182,11 +182,19 @@ public record FilterListViewUrl internal class Validator : AbstractValidator { - public Validator(IValidator urlValidator) + public Validator(IValidator entityIdValidator, IValidator 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 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)); } } diff --git a/services/Directory/FilterLists.Directory.Application/Validators/EntityIdValidator.cs b/services/Directory/FilterLists.Directory.Application/Validators/EntityIdValidator.cs new file mode 100644 index 000000000..1e5e222e5 --- /dev/null +++ b/services/Directory/FilterLists.Directory.Application/Validators/EntityIdValidator.cs @@ -0,0 +1,13 @@ +using FluentValidation; + +namespace FilterLists.Directory.Application.Validators; + +internal class EntityIdValidator : AbstractValidator +{ + public EntityIdValidator() + { + RuleFor(id => id) + .GreaterThan(0) + .When(id => id is not null); + } +}