using Bit.Core.AdminConsole.Utilities.Errors; namespace Bit.Core.AdminConsole.Utilities.Validation; public abstract record ValidationResult; public record Valid(T Value) : ValidationResult; public record Invalid(Error Error) : ValidationResult; public static class ValidationResultMappers { public static ValidationResult Map(this ValidationResult validationResult, B invalidValue) => validationResult switch { Valid => new Valid(invalidValue), Invalid invalid => new Invalid(invalid.Error.ToError(invalidValue)), _ => throw new ArgumentOutOfRangeException(nameof(validationResult), "Unhandled validation result type") }; }