aboutsummaryrefslogblamecommitdiff
path: root/src/main/scala/xyz/driver/pdsuicommon/validation/AdditionalConstraints.scala
blob: cb1082f6fbca9487c4cd86420d04fbf5cfb94a39 (plain) (tree)
1
2
3
4
5
6
7






                                         







                                                                                              


                                                           
                                         





                                                                
                                        






                                                                                                                
package xyz.driver.pdsuicommon.validation

import org.davidbild.tristate.Tristate
import play.api.data.validation._

object AdditionalConstraints {

  val nonNegativePrintedNumber: Constraint[String] = {
    Constraints.pattern("^\\d+$".r, "printedInt.nonNegative", "must be a non-negative number")
  }

  val positivePrintedNumber: Constraint[String] = {
    Constraints.pattern("^[1-9]\\d*$".r, "printedInt.positive", "must be a positive number")
  }

  val optionNonEmptyConstraint: Constraint[Option[Any]] = {
    Constraint("option.nonEmpty") {
      case Some(x) => Valid
      case None    => Invalid("is empty")
    }
  }

  val tristateSpecifiedConstraint: Constraint[Tristate[Any]] = {
    Constraint("tristate.specified") {
      case Tristate.Unspecified => Invalid("unspecified")
      case _                    => Valid
    }
  }

  val uuid: Constraint[String] = {
    Constraints.pattern("""[\da-z]{8}-[\da-z]{4}-[\da-z]{4}-[\da-z]{4}-[\da-z]{12}""".r, "uuid", "invalid uuid")
  }
}