Module: Pathway::Plugins::DryValidation::InstanceMethods

Extended by:
Forwardable
Defined in:
lib/pathway/plugins/dry_validation.rb

Instance Method Summary collapse

Instance Method Details

#validate(state, with: nil) ⇒ Object



59
60
61
62
63
64
65
66
# File 'lib/pathway/plugins/dry_validation.rb', line 59

def validate(state, with: nil)
  if auto_wire && contract_options.any?
    with ||= contract_options.zip(contract_options).to_h
  end
  opts = Hash(with).map { |to, from| [to, state[from]] }.to_h
  validate_with(state[:input], **opts)
    .then { |params| state.update(params:) }
end

#validate_with(input) ⇒ Object



68
69
70
71
72
# File 'lib/pathway/plugins/dry_validation.rb', line 68

def validate_with(input, **)
  result = contract(**).call(input)

  result.success? ? wrap(result.values.to_h) : error(:validation, details: result.errors.to_h)
end