duration.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. package goshared
  2. const durationcmpTpl = `{{ $f := .Field }}{{ $r := .Rules }}
  3. {{ if $r.Const }}
  4. if dur != {{ durLit $r.Const }} {
  5. err := {{ err . "value must equal " (durStr $r.Const) }}
  6. if !all { return err }
  7. errors = append(errors, err)
  8. }
  9. {{ end }}
  10. {{ if $r.Lt }} lt := {{ durLit $r.Lt }}; {{ end }}
  11. {{- if $r.Lte }} lte := {{ durLit $r.Lte }}; {{ end }}
  12. {{- if $r.Gt }} gt := {{ durLit $r.Gt }}; {{ end }}
  13. {{- if $r.Gte }} gte := {{ durLit $r.Gte }}; {{ end }}
  14. {{ if $r.Lt }}
  15. {{ if $r.Gt }}
  16. {{ if durGt $r.GetLt $r.GetGt }}
  17. if dur <= gt || dur >= lt {
  18. err := {{ err . "value must be inside range (" (durStr $r.GetGt) ", " (durStr $r.GetLt) ")" }}
  19. if !all { return err }
  20. errors = append(errors, err)
  21. }
  22. {{ else }}
  23. if dur >= lt && dur <= gt {
  24. err := {{ err . "value must be outside range [" (durStr $r.GetLt) ", " (durStr $r.GetGt) "]" }}
  25. if !all { return err }
  26. errors = append(errors, err)
  27. }
  28. {{ end }}
  29. {{ else if $r.Gte }}
  30. {{ if durGt $r.GetLt $r.GetGte }}
  31. if dur < gte || dur >= lt {
  32. err := {{ err . "value must be inside range [" (durStr $r.GetGte) ", " (durStr $r.GetLt) ")" }}
  33. if !all { return err }
  34. errors = append(errors, err)
  35. }
  36. {{ else }}
  37. if dur >= lt && dur < gte {
  38. err := {{ err . "value must be outside range [" (durStr $r.GetLt) ", " (durStr $r.GetGte) ")" }}
  39. if !all { return err }
  40. errors = append(errors, err)
  41. }
  42. {{ end }}
  43. {{ else }}
  44. if dur >= lt {
  45. err := {{ err . "value must be less than " (durStr $r.GetLt) }}
  46. if !all { return err }
  47. errors = append(errors, err)
  48. }
  49. {{ end }}
  50. {{ else if $r.Lte }}
  51. {{ if $r.Gt }}
  52. {{ if durGt $r.GetLte $r.GetGt }}
  53. if dur <= gt || dur > lte {
  54. err := {{ err . "value must be inside range (" (durStr $r.GetGt) ", " (durStr $r.GetLte) "]" }}
  55. if !all { return err }
  56. errors = append(errors, err)
  57. }
  58. {{ else }}
  59. if dur > lte && dur <= gt {
  60. err := {{ err . "value must be outside range (" (durStr $r.GetLte) ", " (durStr $r.GetGt) "]" }}
  61. if !all { return err }
  62. errors = append(errors, err)
  63. }
  64. {{ end }}
  65. {{ else if $r.Gte }}
  66. {{ if durGt $r.GetLte $r.GetGte }}
  67. if dur < gte || dur > lte {
  68. err := {{ err . "value must be inside range [" (durStr $r.GetGte) ", " (durStr $r.GetLte) "]" }}
  69. if !all { return err }
  70. errors = append(errors, err)
  71. }
  72. {{ else }}
  73. if dur > lte && dur < gte {
  74. err := {{ err . "value must be outside range (" (durStr $r.GetLte) ", " (durStr $r.GetGte) ")" }}
  75. if !all { return err }
  76. errors = append(errors, err)
  77. }
  78. {{ end }}
  79. {{ else }}
  80. if dur > lte {
  81. err := {{ err . "value must be less than or equal to " (durStr $r.GetLte) }}
  82. if !all { return err }
  83. errors = append(errors, err)
  84. }
  85. {{ end }}
  86. {{ else if $r.Gt }}
  87. if dur <= gt {
  88. err := {{ err . "value must be greater than " (durStr $r.GetGt) }}
  89. if !all { return err }
  90. errors = append(errors, err)
  91. }
  92. {{ else if $r.Gte }}
  93. if dur < gte {
  94. err := {{ err . "value must be greater than or equal to " (durStr $r.GetGte) }}
  95. if !all { return err }
  96. errors = append(errors, err)
  97. }
  98. {{ end }}
  99. {{ if $r.In }}
  100. if _, ok := {{ lookup $f "InLookup" }}[dur]; !ok {
  101. err := {{ err . "value must be in list " $r.In }}
  102. if !all { return err }
  103. errors = append(errors, err)
  104. }
  105. {{ else if $r.NotIn }}
  106. if _, ok := {{ lookup $f "NotInLookup" }}[dur]; ok {
  107. err := {{ err . "value must not be in list " $r.NotIn }}
  108. if !all { return err }
  109. errors = append(errors, err)
  110. }
  111. {{ end }}
  112. `