Class: Igniter::Extensions::Contracts::Saga::Result

Inherits:
Object
  • Object
show all
Defined in:
lib/igniter/extensions/contracts/saga/result.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(success:, execution_result:, error: nil, failed_node: nil, compensations: []) ⇒ Result

Returns a new instance of Result.



10
11
12
13
14
15
16
17
# File 'lib/igniter/extensions/contracts/saga/result.rb', line 10

def initialize(success:, execution_result:, error: nil, failed_node: nil, compensations: [])
  @success = success
  @execution_result = execution_result
  @error = error
  @failed_node = failed_node&.to_sym
  @compensations = compensations.freeze
  freeze
end

Instance Attribute Details

#compensationsObject (readonly)

Returns the value of attribute compensations.



8
9
10
# File 'lib/igniter/extensions/contracts/saga/result.rb', line 8

def compensations
  @compensations
end

#errorObject (readonly)

Returns the value of attribute error.



8
9
10
# File 'lib/igniter/extensions/contracts/saga/result.rb', line 8

def error
  @error
end

#execution_resultObject (readonly)

Returns the value of attribute execution_result.



8
9
10
# File 'lib/igniter/extensions/contracts/saga/result.rb', line 8

def execution_result
  @execution_result
end

#failed_nodeObject (readonly)

Returns the value of attribute failed_node.



8
9
10
# File 'lib/igniter/extensions/contracts/saga/result.rb', line 8

def failed_node
  @failed_node
end

Instance Method Details

#explainObject Also known as: to_s



31
32
33
# File 'lib/igniter/extensions/contracts/saga/result.rb', line 31

def explain
  Formatter.format(self)
end

#failed?Boolean

Returns:

  • (Boolean)


23
24
25
# File 'lib/igniter/extensions/contracts/saga/result.rb', line 23

def failed?
  !success?
end

#output(name) ⇒ Object



27
28
29
# File 'lib/igniter/extensions/contracts/saga/result.rb', line 27

def output(name)
  execution_result.output(name)
end

#success?Boolean

Returns:

  • (Boolean)


19
20
21
# File 'lib/igniter/extensions/contracts/saga/result.rb', line 19

def success?
  @success
end

#to_hObject



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/igniter/extensions/contracts/saga/result.rb', line 37

def to_h
  {
    success: success?,
    failed_node: failed_node,
    error: error&.message,
    compensations: compensations.map do |record|
      {
        node: record.node_name,
        success: record.success?,
        error: record.error&.message
      }
    end,
    execution_result: execution_result.to_h
  }
end