aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/pdsuicommon/validation/AdditionalConstraints.scala
blob: cb1082f6fbca9487c4cd86420d04fbf5cfb94a39 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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")
  }
}