Skip to content

Instantly share code, notes, and snippets.

@martindelobel
Created June 30, 2023 14:52
Show Gist options
  • Save martindelobel/0c1b0efd8214526147295d8be957de21 to your computer and use it in GitHub Desktop.
Save martindelobel/0c1b0efd8214526147295d8be957de21 to your computer and use it in GitHub Desktop.
Example of ZIO Prelude Validator for a Retail Transaction
object RetailTransactionValidator extends PoslogValidator {
implicit val fieldLog: FieldLog = FieldLog(nameOf(RetailTransaction))
def validate(retailTransaction: Option[UntypedRetailTransaction])(implicit
transactionId: String): Validation[ValidationError, RetailTransaction] =
retailTransaction match {
case None => Validation.fail(EMPTY_FIELD)
case Some(urt) =>
for {
validRetailTransaction <- Validation
.validateWith(
LineItemValidator.validate(urt.LineItem),
LoyaltyAccountValidator.validate(urt.LoyaltyAccount)
} yield Validation.succeed(validRetailTransaction)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment