20 lines
590 B
C#
20 lines
590 B
C#
using System;
|
|
using System.Linq.Expressions;
|
|
using ErsatzTV.Core;
|
|
using LanguageExt;
|
|
using static LanguageExt.Prelude;
|
|
|
|
namespace ErsatzTV
|
|
{
|
|
public static partial class Validators
|
|
{
|
|
public static Func<Expression<Func<T, int>>, Validation<BaseError, int>>
|
|
AtLeast<T>(this T input, int minimum) =>
|
|
value => Optional(value)
|
|
.Map(i => i.Compile()(input))
|
|
.Where(i => i >= minimum)
|
|
.ToValidation<BaseError>(
|
|
$"[{GetMemberName(value)}] must be greater or equal to {minimum}");
|
|
}
|
|
}
|