Talos.Types.MapType (Talos v1.12.3) View Source
MapType for validation maps
custom options:
* `required_any_one`: true/false, if true - validation check if map has any valid field
* `required_groups`: list("key1", "key2", ...), list of keys from required group,
required group can be simple field or field with dependendencies,
you need to specify all field from the group to check dependenciesFields are tuples {key, type, options \ []}:
key - string or atom, key of map
type - Talos defined Type
options:
* `optional`: true/false, if false - there will be error on key missing
* `depends_on`: list("key1", "key2", ...), list of keys on which field depends,
field pass validation only if this field and all dependent fields pass validationFor example:
iex> import Talos
iex> Talos.valid?(map(), %{foo: :bar})
true
iex> user_params = map(fields: [
...> field(key: "email", type: string(min_length: 5, max_length: 255, regexp: ~r/.*@.*/)),
...> field(key: "age", type: integer(gteq: 18, allow_nil: true)),
...> field(key: "interests", type: list(type: string()), optional: true)
...> ])
iex> Talos.valid?(user_params, %{})
false
iex> Talos.valid?(user_params, %{"email" => "bob@gmail.com", "age" => 30})
true
iex> Talos.valid?(user_params, %{"email" => "bob@gmail.com", "age" => 30, interests: ["elixir"]})
true
iex> deps = map(fields: [
...> field(
...> key: "lastname",
...> type: string(),
...> depends_on: ["birthdate", "firstname"]
...> ),
...> field(
...> key: "firstname",
...> type: string(),
...> depends_on: ["birthdate", "lastname"]
...> ),
...> field(
...> key: "birthdate",
...> type: string(),
...> depends_on: ["lastname", "firstname"]
...> )
...> ])
iex> Talos.valid?(deps, %{})
false
iex> Talos.valid?(deps, %{"firstname" => "John", "lastname" => "Galt"})
false
iex> Talos.valid?(deps, %{"firstname" => "John", "lastname" => "Galt", "birthdate" => "1957-01-01"})
true
Link to this section Summary
Functions
Callback implementation for Talos.Types.errors/2.
Callback implementation for Talos.Types.valid?/2.
Link to this section Types
Specs
Link to this section Functions
Callback implementation for Talos.Types.errors/2.
Specs
Specs
Callback implementation for Talos.Types.valid?/2.