mirror of https://github.com/Squidex/squidex.git
33 changed files with 388 additions and 84 deletions
@ -0,0 +1,31 @@ |
|||
// ==========================================================================
|
|||
// Squidex Headless CMS
|
|||
// ==========================================================================
|
|||
// Copyright (c) Squidex UG (haftungsbeschraenkt)
|
|||
// All rights reserved. Licensed under the MIT license.
|
|||
// ==========================================================================
|
|||
|
|||
using System.Collections.Generic; |
|||
using Squidex.Domain.Apps.Core.Schemas; |
|||
using Squidex.Domain.Apps.Core.ValidateContent.Validators; |
|||
|
|||
namespace Squidex.Domain.Apps.Core.ValidateContent |
|||
{ |
|||
public static class Extensions |
|||
{ |
|||
public static FieldValidator CreateValidator(this IField field) |
|||
{ |
|||
return new FieldValidator(CreateValueValidators(field), field); |
|||
} |
|||
|
|||
private static IEnumerable<IValidator> CreateValueValidators(IField field) |
|||
{ |
|||
return FieldValueValidatorsFactory.CreateValidators(field); |
|||
} |
|||
|
|||
public static IEnumerable<IValidator> CreateBagValidator(this IField field) |
|||
{ |
|||
return FieldBagValidatorsFactory.CreateValidators(field); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,85 @@ |
|||
// ==========================================================================
|
|||
// Squidex Headless CMS
|
|||
// ==========================================================================
|
|||
// Copyright (c) Squidex UG (haftungsbeschränkt)
|
|||
// All rights reserved. Licensed under the MIT license.
|
|||
// ==========================================================================
|
|||
|
|||
using System.Collections.Generic; |
|||
using Squidex.Domain.Apps.Core.Schemas; |
|||
using Squidex.Domain.Apps.Core.ValidateContent.Validators; |
|||
using Squidex.Infrastructure; |
|||
|
|||
namespace Squidex.Domain.Apps.Core.ValidateContent |
|||
{ |
|||
public sealed class FieldBagValidatorsFactory : IFieldVisitor<IEnumerable<IValidator>> |
|||
{ |
|||
private static readonly FieldBagValidatorsFactory Instance = new FieldBagValidatorsFactory(); |
|||
|
|||
private FieldBagValidatorsFactory() |
|||
{ |
|||
} |
|||
|
|||
public static IEnumerable<IValidator> CreateValidators(IField field) |
|||
{ |
|||
Guard.NotNull(field, nameof(field)); |
|||
|
|||
return field.Accept(Instance); |
|||
} |
|||
|
|||
public IEnumerable<IValidator> Visit(IArrayField field) |
|||
{ |
|||
yield break; |
|||
} |
|||
|
|||
public IEnumerable<IValidator> Visit(IField<AssetsFieldProperties> field) |
|||
{ |
|||
yield break; |
|||
} |
|||
|
|||
public IEnumerable<IValidator> Visit(IField<BooleanFieldProperties> field) |
|||
{ |
|||
yield break; |
|||
} |
|||
|
|||
public IEnumerable<IValidator> Visit(IField<DateTimeFieldProperties> field) |
|||
{ |
|||
yield break; |
|||
} |
|||
|
|||
public IEnumerable<IValidator> Visit(IField<GeolocationFieldProperties> field) |
|||
{ |
|||
yield break; |
|||
} |
|||
|
|||
public IEnumerable<IValidator> Visit(IField<JsonFieldProperties> field) |
|||
{ |
|||
yield break; |
|||
} |
|||
|
|||
public IEnumerable<IValidator> Visit(IField<NumberFieldProperties> field) |
|||
{ |
|||
yield break; |
|||
} |
|||
|
|||
public IEnumerable<IValidator> Visit(IField<ReferencesFieldProperties> field) |
|||
{ |
|||
yield break; |
|||
} |
|||
|
|||
public IEnumerable<IValidator> Visit(IField<StringFieldProperties> field) |
|||
{ |
|||
yield break; |
|||
} |
|||
|
|||
public IEnumerable<IValidator> Visit(IField<TagsFieldProperties> field) |
|||
{ |
|||
yield break; |
|||
} |
|||
|
|||
public IEnumerable<IValidator> Visit(IField<UIFieldProperties> field) |
|||
{ |
|||
yield return NoValueValidator.Instance; |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,24 @@ |
|||
// ==========================================================================
|
|||
// Squidex Headless CMS
|
|||
// ==========================================================================
|
|||
// Copyright (c) Squidex UG (haftungsbeschraenkt)
|
|||
// All rights reserved. Licensed under the MIT license.
|
|||
// ==========================================================================
|
|||
|
|||
namespace Squidex.Domain.Apps.Core.ValidateContent |
|||
{ |
|||
public static class Undefined |
|||
{ |
|||
public static readonly object Value = new object(); |
|||
|
|||
public static bool IsUndefined(this object other) |
|||
{ |
|||
return ReferenceEquals(other, Value); |
|||
} |
|||
|
|||
public static bool IsNullOrUndefined(this object other) |
|||
{ |
|||
return other == null || other.IsUndefined(); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,33 @@ |
|||
// ==========================================================================
|
|||
// Squidex Headless CMS
|
|||
// ==========================================================================
|
|||
// Copyright (c) Squidex UG (haftungsbeschraenkt)
|
|||
// All rights reserved. Licensed under the MIT license.
|
|||
// ==========================================================================
|
|||
|
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using System.Threading.Tasks; |
|||
|
|||
namespace Squidex.Domain.Apps.Core.ValidateContent.Validators |
|||
{ |
|||
public sealed class AggregateValidator : IValidator |
|||
{ |
|||
private readonly IValidator[] validators; |
|||
|
|||
public AggregateValidator(IEnumerable<IValidator> validators) |
|||
{ |
|||
this.validators = validators?.ToArray(); |
|||
} |
|||
|
|||
public Task ValidateAsync(object value, ValidationContext context, AddError addError) |
|||
{ |
|||
if (validators?.Length > 0) |
|||
{ |
|||
return Task.WhenAll(validators.Select(x => x.ValidateAsync(value, context, addError))); |
|||
} |
|||
|
|||
return Task.CompletedTask; |
|||
} |
|||
} |
|||
} |
|||
Loading…
Reference in new issue