Scala signup validation with all field errors
Scala
case class Signup(name: String, email: String, age: Int)
def validateSignup(input: Signup): Either[List[String], Signup] =
val errors = List(
Option.when(input.name.trim.isEmpty)("name: required"),
Option.when(input.email.count(_ == '@') != 1)("email: must contain one @"),
Option.when(input.age < 18)("age: must be at least 18"),
Option.when(input.age > 120)("age: must be at most 120")
).flatten
if errors.isEmpty then
Right(input.copy(name = input.name.trim, email = input.email.trim.toLowerCase))
else Left(errors)