25 std::cout <<
"=== Schema Validation Example ===" << std::endl;
28 std::cout <<
"\n1. Defining schema:" << std::endl;
29 auto schema = container_schema()
30 .require(
"username", value_types::string_value)
31 .require(
"age", value_types::int_value)
33 .length(
"username", 3, 20)
34 .optional(
"nickname", value_types::string_value);
36 std::cout <<
" Fields: " << schema.field_count() << std::endl;
37 std::cout <<
" 'username' required: " << (schema.is_required(
"username") ?
"yes" :
"no")
39 std::cout <<
" 'nickname' required: " << (schema.is_required(
"nickname") ?
"yes" :
"no")
43 std::cout <<
"\n2. Validating valid container:" << std::endl;
44 value_container valid;
45 valid.set(
"username", std::string(
"alice"));
46 valid.set(
"age",
static_cast<int64_t
>(25));
48 auto result = schema.validate(valid);
49 std::cout <<
" Valid: " << (result ?
"yes" :
"no") << std::endl;
52 std::cout <<
"\n3. Validating invalid container (missing age):" << std::endl;
53 value_container invalid;
54 invalid.set(
"username", std::string(
"bob"));
56 auto errors = schema.validate_all(invalid);
57 std::cout <<
" Errors: " << errors.size() << std::endl;
58 for (
const auto& err : errors)
60 std::cout <<
" - " << err.field <<
": " << err.message << std::endl;
64 std::cout <<
"\n4. Schema inspection:" << std::endl;
65 std::cout <<
" Has 'username': " << (schema.has_field(
"username") ?
"yes" :
"no")
67 std::cout <<
" Has 'address': " << (schema.has_field(
"address") ?
"yes" :
"no")
70 std::cout <<
"\nDone." << std::endl;