Class: Operations::Components::Preconditions
- Defined in:
- lib/operations/components/preconditions.rb
Overview
We check all the precondition failures to return all the codes to the user at once. This provides a better UX, user is able to fix everything at once instead of getting messages one by one. This is similar to the idea of validations.
Precondition can return a Symbol - it will be used as an error code. If String is returned - it will be used as a message itself. Please avoid returning string, use i18n instead. Hash with ‘:error` key will be also treated as a failure ans used accordingly. Also, `Failure` monad gets unwrapped and the value follows the rules above. Also, it is possible to return an array of failures.
Successful preconditions returns either nil or an empty array or a ‘Success` monad.
Constant Summary
Constants inherited from Base
Base::DEFAULT_NAMES_MAP, Base::MONADS_DO_WRAPPER_SIGNATURES
Instance Method Summary collapse
Methods inherited from Prechecks
Instance Method Details
#call(params, context) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/operations/components/preconditions.rb', line 20 def call(params, context) failures = callable.flat_map do |entry| results = Array.wrap(entry.call(**context)) results.filter_map { |result| result_failure(result) } end result( params: params, context: context, errors: errors(normalize_failure(failures)) ) end |