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); + } +}