Validation
The Athena::Validator component adds a robust/flexible validation framework. This component is also mostly optional, but is leveraged for the super useful ATHR::RequestBody resolver type to ensure only valid data make it into the system. This component can also be used to define validation requirements for ATH::Params::ParamInterfaces.
Custom Constraints#
In addition to the general information for defining Custom Constraints, the validator component defines a specific type for defining service based constraint validators: AVD::ServiceConstraintValidator
.
This type should be inherited from instead of AVD::ConstraintValidator
IF the validator for your custom constraint needs to be a service, E.x.
class Athena::Validator::Constraints::CustomConstraint < AVD::Constraint
# ...
@[ADI::Register]
struct Validator < AVD::ServiceConstraintValidator
def initialize(...); end
# :inherit:
def validate(value : _, constraint : AVD::Constraints::CustomConstraint) : Nil
# ...
end
end
end