Skip to content

Latest commit

 

History

History
84 lines (64 loc) · 2 KB

README.md

File metadata and controls

84 lines (64 loc) · 2 KB

Vx

Build Coverage Status Module Version Hex Docs License Last Updated

The Elixir schema validator.

Installation

The package can be installed by adding vx to your list of dependencies in mix.exs:

def deps do
  [
    {:vx, "~> 0.4.0"}
  ]
end

Usage

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

Docs

Take a look at the documentation to find out available types and options.