FieldValidationBuilder
mach::validation::FieldValidationBuilder
Description
Section titled “Description”Configures validation rules for a field. Used to associate one or more validation rules with a field of a type.
Headers
Section titled “Headers”Primary header:
#include <mach/validation/FieldValidationBuilder.hpp>Convenience header:
#include <mach/mach.hpp>Syntax
Section titled “Syntax”template <typename T, typename Field>class FieldValidationBuilder {
public: FieldValidationBuilder& email();
FieldValidationBuilder& url();
FieldValidationBuilder& length(std::size_t minLength, std::size_t maxLength);
FieldValidationBuilder& minLength(std::size_t minLength);
FieldValidationBuilder& maxLength(std::size_t maxLength);
FieldValidationBuilder& regex(std::string_view pattern);
template <typename Number> FieldValidationBuilder& range(Number minimum, Number maximum);
template <typename Number> FieldValidationBuilder& min(Number minimum);
template <typename Number> FieldValidationBuilder& max(Number maximum);
template <typename Number> FieldValidationBuilder& multipleOf(Number factor);
template <typename U> FieldValidationBuilder& equals(U&& value);
template <typename U> FieldValidationBuilder& notEquals(U&& value);};Member Functions
Section titled “Member Functions”| Name | Description |
|---|---|
email |
Adds email validation. |
url |
Adds URL validation. |
length |
Adds length validation. |
minLength |
Adds minimum length validation. |
maxLength |
Adds maximum length validation. |
regex |
Adds regular expression validation. |
range |
Adds range validation. |
min |
Adds minimum value validation. |
max |
Adds maximum value validation. |
multipleOf |
Adds multiple-of validation. |
equals |
Adds equality validation. |
notEquals |
Adds inequality validation. |
Thread Safety
Section titled “Thread Safety”Not thread-safe. Validation configuration should be performed from one thread.
Remarks
Section titled “Remarks”- Validation rules are evaluated in the order they are configured.
- Multiple validation rules may be applied to the same field.
- Applying the same validation rule multiple times is allowed.
- Validation rules are typically configured by chaining member function calls.
Example
Section titled “Example”struct RegisterRequest { std::string username; std::string email; int age;
void validate(mach::ValidationBuilder<RegisterRequest>& builder) const { builder.field(&RegisterRequest::username) .length(3, 20) .regex(R"(^[A-Za-z0-9_]+$)");
builder.field(&RegisterRequest::email) .email();
builder.field(&RegisterRequest::age) .range(18, 120); }};
MACH_DEFINE_JSON(RegisterRequest, username, email, age)See Also
Section titled “See Also”| Name | Description |
|---|---|
ValidationBuilder |
Provides field validation through FieldValidationBuilder. |