Jeaux
Jeaux is my attempt at building a light and easy schema validator.
Installation
Available in Hex, the package can be installed as:
- Add
jeauxto your list of dependencies inmix.exs:
```elixir
def deps do
[{:jeaux, "~> 0.4.0"}]
end
```
Right now it only supports validating params but I would like to be able to deep validate payloads as well.
Example:
# web/controllers/my_controller.ex
@params_schema %{
lat!: :float,
lon!: :float,
radius: [type: :integer, default: 100, min: 1, max: 100],
properties: %{
name: :string
}
}
def index(conn, params) do
case Jeaux.validate(params, @params_schema) do
{:ok, valid_params} -> do_your_thing(valid_params)
{:error, message} -> Explode.bad_request(conn, message)
end
end
Using a ! in your key denotes it is required.
Currently, the following keys are valid:
type:with:integer,:string,:float, or:listas applicable typesdefault:Sets a default value if none is currently provided in paramsmin:Minimum value a param can havemax:Maximum value a param can havevalid:Values that are valid options. Can be a single item or a list.
It is important to note that no matter how params are passed in to Jeaux, they will be returned with keys as atoms.
If you want to contribute, feel free to fork and open a pr.
Checkout Explode for an easy utility for responding with standard HTTP/JSON error payloads in Plug- and Phoenix-based applications.