Ronny Bräunlich
10/20/2023, 6:34 AMValidationResult
class instead of e.g. using Arrow's Either
. I guess the latter would make for a better interoperability.PoisonedYouth
10/20/2023, 6:58 AMValidationResult
to `Either`/`EitherNel` . Something like below:
fun <T> ValidationResult<T>.toEitherNel(): EitherNel<Failure, T> =
when (this) {
is ValidationResult.Success<T> -> Either.Right(this.value)
is ValidationResult.Failure -> {
Either.Left(this.violations.map { Failure.ValidationFailure(it.message) }.toNonEmptyList())
}
}
fun <T> ValidationResult<T>.toEither(): Either<Failure, T> =
when (this) {
is ValidationResult.Success<T> -> Either.Right(this.value)
is ValidationResult.Failure -> {
Either.Left(Failure.ValidationFailure(this.violations.joinToString { it.message }))
}
}
Ronny Bräunlich
10/20/2023, 7:01 AMPoisonedYouth
10/20/2023, 7:06 AMRonny Bräunlich
10/20/2023, 7:13 AMPoisonedYouth
10/20/2023, 7:14 AMJohann Pardanaud
10/20/2023, 7:19 AM