The Elixir schema validator.
The package can be installed by adding vx
to your list of dependencies in
mix.exs
:
def deps do
[
{:vx, "~> 0.4.0"}
]
end
With Vx, you have the capability to define schemata for validating complex data effortlessly.
First, you need to define your schema.
schema = Vx.String.t()
After that, you can call Vx.validate/2
or Vx.validate!/2
to check if a given
values matches:
Vx.validate(schema, "foo")
# :ok
When the value does not match, an error is returned (or raised, respectively), indicating the specific issue.
Vx.validate(schema, 123)
# {:error, %Vx.Error{...}}
Vx.validate!(schema, 123)
# ** (Vx.Error) must be a string
Additional constraints can be added to certain types by piping everything together:
Vx.Number.t()
|> Vx.Number.gteq(3)
|> Vx.Number.lt(7)
You can combine multiple types and constraints to validate more complex schemata:
Vx.Map.shape(%{
"name" => Vx.String.t(),
"age" => Vx.Number.t(),
"hobbies" =>
Vx.List.t(Vx.String.present())
|> Vx.List.non_empty(),
"type" => Vx.Enum.t(["user", "admin"]),
"addresses" => Vx.List.t(Vx.Struct.t(Address))
})
Take a look at the documentation to find out available types and options.