View Source Parameter.Validators (Parameter v0.7.3)

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

@spec email(binary()) :: resp()

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"}}
@spec equal(binary(), [{:to, any()}]) :: resp()

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"}}
@spec length(binary(), min: any(), max: any()) :: resp()

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}}
@spec none_of(binary(), [{:options, any()}]) :: resp()

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}}
@spec one_of(binary(), [{:options, any()}]) :: resp()

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}}
@spec regex(binary(), [{:regex, any()}]) :: resp()

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"}}