Packages

Vex validator adapter for Formex

Current section

Files

Jump to
formex_vex lib formex_vex.ex
Raw

lib/formex_vex.ex

defmodule Formex.Validator.Vex do
@behaviour Formex.Validator
alias Formex.Form
@spec validate(Form.t) :: Form.t
def validate(form) do
# errors_struct = if form.type.validate_whole_struct? do
# form.new_struct
# |> Vex.errors
# |> Enum.reduce([], fn error ->
# IO.inspect error
# end)
# else
# []
# end
errors_type = form
|> Form.get_fields_validatable
|> Enum.map(fn item ->
if item.validation do
errors = form.new_struct
|> Map.from_struct()
|> Vex.errors([{item.name, item.validation}])
|> Enum.map(fn error ->
message = elem(error, 3)
{message, []}
end)
{item.name, errors}
else
{item.name, []}
end
end)
errors = errors_type
form
|> Map.put(:errors, errors)
end
end