Handles type casting logic for Skema schemas.
This module is responsible for converting raw input data to proper types according to schema definitions. It processes each field, applies custom casting functions, and handles nested schemas and arrays.
Summary
Functions
Casts a single field value according to its definition.
Processes casting and validation for all fields in a schema in a single pass.
Processes casting for all fields in a schema.
Processes casting for a single field.
Processes casting and validation for a single field.
Functions
Casts a single field value according to its definition.
@spec process_cast_and_validate(%Skema.Result{ errors: term(), params: term(), schema: term(), valid?: term(), valid_data: term() }) :: {:ok, map()} | {:error, %Skema.Result{ errors: term(), params: term(), schema: term(), valid?: term(), valid_data: term() }}
Processes casting and validation for all fields in a schema in a single pass.
This is an optimized version that validates each field immediately after successful casting, reducing the number of iterations from 2 to 1.
Returns {:ok, data} if both casting and validation succeed, {:error, result} otherwise.
@spec process_casting(%Skema.Result{ errors: term(), params: term(), schema: term(), valid?: term(), valid_data: term() }) :: {:ok, map()} | {:error, %Skema.Result{ errors: term(), params: term(), schema: term(), valid?: term(), valid_data: term() }}
Processes casting for all fields in a schema.
Returns {:ok, data} if casting succeeds, {:error, result} otherwise.
@spec process_field( %Skema.Result{ errors: term(), params: term(), schema: term(), valid?: term(), valid_data: term() }, {atom(), list()} ) :: %Skema.Result{ errors: term(), params: term(), schema: term(), valid?: term(), valid_data: term() }
Processes casting for a single field.
@spec process_field_with_validation( %Skema.Result{ errors: term(), params: term(), schema: term(), valid?: term(), valid_data: term() }, {atom(), list()} ) :: %Skema.Result{ errors: term(), params: term(), schema: term(), valid?: term(), valid_data: term() }
Processes casting and validation for a single field.
Casts the field first, and if successful, immediately validates it.