generated from athena-framework/component-template
/
positive_or_zero.cr
47 lines (46 loc) · 1.65 KB
/
positive_or_zero.cr
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# Validates that a value is a positive number, or `0`.
# Use `AVD::Constraints::Positive` if you don't want to allow `0`.
#
# ## Configuration
#
# ### Optional Arguments
#
# #### message
#
# **Type:** `String` **Default:** `This value should be positive or zero.`
#
# The message that will be shown if the value is not greater than or equal to `0`.
#
# ##### Placeholders
#
# The following placeholders can be used in this message:
#
# * `{{ value }}` - The current (invalid) value.
# * `{{ compared_value }}` - The expected value.
# * `{{ compared_value_type }}` - The type of the expected value.
#
# #### groups
#
# **Type:** `Array(String) | String | Nil` **Default:** `nil`
#
# The [validation groups](https://athena-framework.github.io/validator/Athena/Validator/Constraint.html#validation-groups) this constraint belongs to.
# `AVD::Constraint::DEFAULT_GROUP` is assumed if `nil`.
#
# #### payload
#
# **Type:** `Hash(String, String)?` **Default:** `nil`
#
# Any arbitrary domain-specific data that should be stored with this constraint.
# The [payload](https://athena-framework.github.io/validator/Athena/Validator/Constraint.html#payload) is not used by `Athena::Validator`, but its processing is completely up to you.
class Athena::Validator::Constraints::PositiveOrZero < Athena::Validator::Constraints::GreaterThanOrEqual(Int32)
def initialize(
message : String = "This value should be positive or zero.",
groups : Array(String) | String | Nil = nil,
payload : Hash(String, String)? = nil
)
super Int32.zero, message, groups, payload
end
def validated_by : AVD::ConstraintValidator.class
AVD::Constraints::GreaterThanOrEqual::Validator
end
end