Module: Swamp::Operation

Defined in:
lib/swamp/operation.rb,
lib/swamp/operation/result.rb

Overview

Operations

Examples:

class MyOperation
  include Swamp::Operation

  def _call
    input[:id]
  end

  input do
    required(:id) { int? }
  end
end

Defined Under Namespace

Modules: ClassMethods, Result Classes: ValidationError

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#inputObject (readonly)

Returns the value of attribute input.



26
27
28
# File 'lib/swamp/operation.rb', line 26

def input
  @input
end

Class Method Details

.included(base) ⇒ Object



22
23
24
# File 'lib/swamp/operation.rb', line 22

def self.included(base)
  base.extend ClassMethods
end

Instance Method Details

#before_call!(**kwargs) ⇒ Object



33
34
35
36
37
38
39
40
41
42
# File 'lib/swamp/operation.rb', line 33

def before_call!(**kwargs)
  @input = Hash[]
  return unless self.class.input_processor

  self.class.input_processor.call(kwargs).tap do |result|
    raise ValidationError, result.messages unless result.success?

    @input = result.output
  end
end

#call(**kwargs) ⇒ Object



28
29
30
31
# File 'lib/swamp/operation.rb', line 28

def call(**kwargs)
  before_call!(**kwargs)
  _call
end