duration.go 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package cc
  2. const durationTpl = `{{ $f := .Field }}{{ $r := .Rules }}
  3. {{ template "required" . }}
  4. {{ if or $r.In $r.NotIn $r.Lt $r.Lte $r.Gt $r.Gte $r.Const }}
  5. {
  6. if ({{ hasAccessor . }}) {
  7. const pgv::protobuf_wkt::Duration& dur = {{ accessor . }};
  8. if (dur.nanos() > 999999999 || dur.nanos() < -999999999 ||
  9. dur.seconds() > pgv::protobuf::util::TimeUtil::kDurationMaxSeconds ||
  10. dur.seconds() < pgv::protobuf::util::TimeUtil::kDurationMinSeconds)
  11. {{ errCause . "err" "value is not a valid duration" }}
  12. {{ if $r.Const }}
  13. if (dur != {{ durLit $r.Const }})
  14. {{ err . "value must equal " (durStr $r.Const) }}
  15. {{ end }}
  16. {{ if $r.Lt }} const pgv::protobuf_wkt::Duration lt = {{ durLit $r.Lt }}; {{ end }}
  17. {{- if $r.Lte }} const pgv::protobuf_wkt::Duration lte = {{ durLit $r.Lte }}; {{ end }}
  18. {{- if $r.Gt }} const pgv::protobuf_wkt::Duration gt = {{ durLit $r.Gt }}; {{ end }}
  19. {{- if $r.Gte }} const pgv::protobuf_wkt::Duration gte = {{ durLit $r.Gte }}; {{ end }}
  20. {{ if $r.Lt }}
  21. {{ if $r.Gt }}
  22. {{ if durGt $r.GetLt $r.GetGt }}
  23. if (dur <= gt || dur >= lt)
  24. {{ err . "value must be inside range (" (durStr $r.GetGt) ", " (durStr $r.GetLt) ")" }}
  25. {{ else }}
  26. if (dur >= lt && dur <= gt)
  27. {{ err . "value must be outside range [" (durStr $r.GetLt) ", " (durStr $r.GetGt) "]" }}
  28. {{ end }}
  29. {{ else if $r.Gte }}
  30. {{ if durGt $r.GetLt $r.GetGte }}
  31. if (dur < gte || dur >= lt)
  32. {{ err . "value must be inside range [" (durStr $r.GetGte) ", " (durStr $r.GetLt) ")" }}
  33. {{ else }}
  34. if (dur >= lt && dur < gte)
  35. {{ err . "value must be outside range [" (durStr $r.GetLt) ", " (durStr $r.GetGte) ")" }}
  36. {{ end }}
  37. {{ else }}
  38. if (dur >= lt)
  39. {{ err . "value must be less than " (durStr $r.GetLt) }}
  40. {{ end }}
  41. {{ else if $r.Lte }}
  42. {{ if $r.Gt }}
  43. {{ if durGt $r.GetLte $r.GetGt }}
  44. if (dur <= gt || dur > lte)
  45. {{ err . "value must be inside range (" (durStr $r.GetGt) ", " (durStr $r.GetLte) "]" }}
  46. {{ else }}
  47. if (dur > lte && dur <= gt)
  48. {{ err . "value must be outside range (" (durStr $r.GetLte) ", " (durStr $r.GetGt) "]" }}
  49. {{ end }}
  50. {{ else if $r.Gte }}
  51. {{ if durGt $r.GetLte $r.GetGte }}
  52. if (dur < gte || dur > lte)
  53. {{ err . "value must be inside range [" (durStr $r.GetGte) ", " (durStr $r.GetLte) "]" }}
  54. {{ else }}
  55. if (dur > lte && dur < gte)
  56. {{ err . "value must be outside range (" (durStr $r.GetLte) ", " (durStr $r.GetGte) ")" }}
  57. {{ end }}
  58. {{ else }}
  59. if (dur > lte)
  60. {{ err . "value must be less than or equal to " (durStr $r.GetLte) }}
  61. {{ end }}
  62. {{ else if $r.Gt }}
  63. if (dur <= gt)
  64. {{ err . "value must be greater than " (durStr $r.GetGt) }}
  65. {{ else if $r.Gte }}
  66. if (dur < gte)
  67. {{ err . "value must be greater than or equal to " (durStr $r.GetGte) }}
  68. {{ end }}
  69. {{ if $r.In }}
  70. if ({{ lookup $f "InLookup" }}.find(dur) == {{ lookup $f "InLookup" }}.end())
  71. {{ err . "value must be in list " $r.In }}
  72. {{ else if $r.NotIn }}
  73. if ({{ lookup $f "NotInLookup" }}.find(dur) != {{ lookup $f "NotInLookup" }}.end())
  74. {{ err . "value must not be in list " $r.NotIn }}
  75. {{ end }}
  76. }
  77. }
  78. {{ end }}
  79. `