Validation engine for PhoenixMicro.Schema.
Takes a list of field_def tuples {name, type, opts} and a raw map,
and returns {:ok, normalised_map} or {:error, [{field, reason}]}.
This module is called internally by every schema module's generated
validate/1 callback. You can also call it directly if you have field
definitions at runtime:
fields = [
{:amount_cents, :integer, required: true},
{:currency, :string, required: true, default: "USD"}
]
PhoenixMicro.Schema.Validator.validate(fields, %{"amount_cents" => 999})
# => {:ok, %{"amount_cents" => 999, "currency" => "USD"}}
Summary
Functions
Returns a human-readable summary of validation errors.
Validates payload against the list of field definitions.
Types
@type field_def() :: {atom(), PhoenixMicro.Schema.Field.field_type(), keyword()}
@type result() :: {:ok, map()} | {:error, [validation_error()]}
Functions
@spec format_errors([validation_error()]) :: String.t()
Returns a human-readable summary of validation errors.
PhoenixMicro.Schema.Validator.format_errors([{:amount_cents, "is required"}])
# => "amount_cents: is required"
Validates payload against the list of field definitions.
Keys are normalised to strings. Missing required fields produce errors. Missing optional fields with defaults have defaults applied.