View Source Parameter.Validators (Parameter v0.12.1)
Common validators to use within fields of the Parameter.Schema
examples
Examples
param User do
field :email, :string, validator: &Validators.email(&1)
end
iex> Parameter.load(User, %{"email" => "not an email"})
{:error, %{email: "is invalid"}}
Link to this section Summary
Functions
Validates email address
Validates if value is equal to another
Validates if a value is between a min and max
Validates if a value is not a member
Validates if a value is a member of the list
Validates if a value matches a regex expression
Link to this section Types
@type resp() :: :ok | {:error, String.t()}
Link to this section Functions
Validates email address
param User do
field :email, :string, validator: &Validators.email(&1)
end
iex> Parameter.load(User, %{"email" => "not an email"})
{:error, %{email: "is invalid"}}
iex> Parameter.load(User, %{"email" => "john@gmail.com"})
{:ok, %{email: "john@gmail.com"}}
Validates if value is equal to another
param User do
field :permission, :string, validator: {&Validators.equal/2, to: "admin"}
end
iex> Parameter.load(User, %{"permission" => "super_admin"})
{:error, %{permission: "is invalid"}}
iex> Parameter.load(User, %{"permission" => "admin"})
{:ok, %{permission: "admin"}}
Validates if a value is between a min and max
param User do
field :age, :integer, validator: {&Validators.length/2, min: 18, max: 50}
end
iex> Parameter.load(User, %{"age" => 12})
{:error, %{age: "is invalid"}}
iex> Parameter.load(User, %{"age" => 30})
{:ok, %{age: 30}}
Validates if a value is not a member
param User do
field :permission, :atom, validator: {&Validators.none_of/2, options: [:admin, :super_admin]}
end
iex> Parameter.load(User, %{"permission" => "super_admin"})
{:error, %{permission: "is invalid"}}
iex> Parameter.load(User, %{"permission" => "normal_user"})
{:ok, %{permission: :normal_user}}
Validates if a value is a member of the list
param User do
field :permission, :atom, validator: {&Validators.one_of/2, options: [:admin, :super_admin]}
end
iex> Parameter.load(User, %{"permission" => "normal_user"})
{:error, %{permission: "is invalid"}}
iex> Parameter.load(User, %{"permission" => "super_admin"})
{:ok, %{permission: :super_admin}}
Validates if a value matches a regex expression
param User do
field :code, :string, validator: {&Validators.regex/2, regex: ~r/code/}
end
iex> Parameter.load(User, %{"code" => "12345"})
{:error, %{code: "is invalid"}}
iex> Parameter.load(User, %{"code" => "code:12345"})
{:ok, %{code: "code:12345"}}