Skip to content
Download

FieldValidationBuilder

mach::validation::FieldValidationBuilder

Configures validation rules for a field. Used to associate one or more validation rules with a field of a type.

Primary header:

#include <mach/validation/FieldValidationBuilder.hpp>

Convenience header:

#include <mach/mach.hpp>
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);
};
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.

Not thread-safe. Validation configuration should be performed from one thread.

  • 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.
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)
Name Description
ValidationBuilder Provides field validation through FieldValidationBuilder.