xema v0.11.4 Xema.Builder View Source
This module contains some convenience functions to generate schemas.
Examples
iex> import Xema.Builder
...> schema = Xema.new integer(minimum: 1)
...> Xema.valid?(schema, 6)
true
...> Xema.valid?(schema, 0)
false
Link to this section Summary
Functions
Returns a tuple of :any
and the given keyword list.
Returns a tuple of :atom
and the given keyword list.
Returns a tuple of :boolean
and the given keyword list.
Specifies a field. This function will be used inside xema/0
.
Returns a tuple of :float
and the given keyword list.
Returns a tuple of :integer
and the given keyword list.
Returns a tuple of :keyword
and the given keyword list.
Returns a tuple of :list
and the given keyword list.
Returns a tuple of :map
and the given keyword list.
Returns a tuple of :number
and the given keyword list.
Returns the tuple {:ref, ref}
.
Sets the list of required fields. Specifies a field. This function will be
used inside xema/0
.
Returns a tuple of :string
and the given keyword list.
Returns :struct
.
Returns the tuple {:struct, module: module}
.
Returns a tuple of :tuple
and the given keyword list.
Creates a schema
.
Creates a schema
with the given name.
Link to this section Functions
Specs
any() :: :any
Returns a tuple of :any
and the given keyword list.
Examples
iex> Xema.Builder.any(key: 42)
{:any, [key: 42]}
Specs
Specs
atom() :: :atom
Returns a tuple of :atom
and the given keyword list.
Examples
iex> Xema.Builder.atom(key: 42)
{:atom, [key: 42]}
Specs
Specs
boolean() :: :boolean
Returns a tuple of :boolean
and the given keyword list.
Examples
iex> Xema.Builder.boolean(key: 42)
{:boolean, [key: 42]}
Specs
Specs
field(atom(), Xema.Schema.type() | module(), keyword()) :: {:xema, Xema.t()} | {:module, module()} | {:type, atom()}
Specifies a field. This function will be used inside xema/0
.
Arguments:
name
: the name of the field.type
: the type of the field. Thetype
can also be astruct
or another schema.opts
: the rules for the field.
Examples
iex> defmodule User do
...> use Xema
...>
...> xema do
...> field :name, :string, min_length: 1
...> end
...> end
...>
iex> %{"name" => "Tim"} |> User.cast!() |> Map.from_struct()
%{name: "Tim"}
For more examples see "Examples: Struct".
Specs
float() :: :float
Returns a tuple of :float
and the given keyword list.
Examples
iex> Xema.Builder.float(key: 42)
{:float, [key: 42]}
Specs
Specs
integer() :: :integer
Returns a tuple of :integer
and the given keyword list.
Examples
iex> Xema.Builder.integer(key: 42)
{:integer, [key: 42]}
Specs
Specs
keyword() :: :keyword
Returns a tuple of :keyword
and the given keyword list.
Examples
iex> Xema.Builder.keyword(key: 42)
{:keyword, [key: 42]}
Specs
Specs
list() :: :list
Returns a tuple of :list
and the given keyword list.
Examples
iex> Xema.Builder.list(key: 42)
{:list, [key: 42]}
Specs
Specs
map() :: :map
Returns a tuple of :map
and the given keyword list.
Examples
iex> Xema.Builder.map(key: 42)
{:map, [key: 42]}
Specs
Specs
number() :: :number
Returns a tuple of :number
and the given keyword list.
Examples
iex> Xema.Builder.number(key: 42)
{:number, [key: 42]}
Specs
Returns the tuple {:ref, ref}
.
Specs
Sets the list of required fields. Specifies a field. This function will be
used inside xema/0
.
Examples
iex> defmodule Person do
...> use Xema
...>
...> xema do
...> field :name, :string, min_length: 1
...> required [:name]
...> end
...> end
...>
iex> %{"name" => "Tim"} |> Person.cast!() |> Map.from_struct()
%{name: "Tim"}
Specs
string() :: :string
Returns a tuple of :string
and the given keyword list.
Examples
iex> Xema.Builder.string(key: 42)
{:string, [key: 42]}
Specs
Specs
strux() :: :struct
Returns :struct
.
Specs
Returns the tuple {:struct, module: module}
.
Specs
tuple() :: :tuple
Returns a tuple of :tuple
and the given keyword list.
Examples
iex> Xema.Builder.tuple(key: 42)
{:tuple, [key: 42]}
Specs
Creates a schema
.
Creates a schema
with the given name.