Class: Igniter::Extensions::Contracts::Reactive::DispatchResult

Inherits:
Object
  • Object
show all
Defined in:
lib/igniter/extensions/contracts/reactive/dispatch_result.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(status:, events:, errors:, result:, execution_result:, execution_error: nil) ⇒ DispatchResult

Returns a new instance of DispatchResult.



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

def initialize(status:, events:, errors:, result:, execution_result:, execution_error: nil)
  @status = status.to_sym
  @events = events.freeze
  @errors = errors.freeze
  @result = result
  @execution_result = execution_result
  @execution_error = execution_error
  freeze
end

Instance Attribute Details

#errorsObject (readonly)

Returns the value of attribute errors.



8
9
10
# File 'lib/igniter/extensions/contracts/reactive/dispatch_result.rb', line 8

def errors
  @errors
end

#eventsObject (readonly)

Returns the value of attribute events.



8
9
10
# File 'lib/igniter/extensions/contracts/reactive/dispatch_result.rb', line 8

def events
  @events
end

#execution_errorObject (readonly)

Returns the value of attribute execution_error.



8
9
10
# File 'lib/igniter/extensions/contracts/reactive/dispatch_result.rb', line 8

def execution_error
  @execution_error
end

#execution_resultObject (readonly)

Returns the value of attribute execution_result.



8
9
10
# File 'lib/igniter/extensions/contracts/reactive/dispatch_result.rb', line 8

def execution_result
  @execution_result
end

#resultObject (readonly)

Returns the value of attribute result.



8
9
10
# File 'lib/igniter/extensions/contracts/reactive/dispatch_result.rb', line 8

def result
  @result
end

#statusObject (readonly)

Returns the value of attribute status.



8
9
10
# File 'lib/igniter/extensions/contracts/reactive/dispatch_result.rb', line 8

def status
  @status
end

Instance Method Details

#failed?Boolean

Returns:

  • (Boolean)


24
25
26
# File 'lib/igniter/extensions/contracts/reactive/dispatch_result.rb', line 24

def failed?
  status == :failed
end

#output(name) ⇒ Object



28
29
30
# File 'lib/igniter/extensions/contracts/reactive/dispatch_result.rb', line 28

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

#success?Boolean

Returns:

  • (Boolean)


20
21
22
# File 'lib/igniter/extensions/contracts/reactive/dispatch_result.rb', line 20

def success?
  status == :succeeded
end

#to_hObject



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/igniter/extensions/contracts/reactive/dispatch_result.rb', line 32

def to_h
  {
    status: status,
    success: success?,
    events: events.map(&:to_h),
    errors: errors.map do |entry|
      {
        event: entry.fetch(:event).to_h,
        subscription: entry.fetch(:subscription).to_h,
        error: {
          type: entry.fetch(:error).class.name,
          message: entry.fetch(:error).message
        }
      }
    end,
    execution_error: execution_error && {
      type: execution_error.class.name,
      message: execution_error.message
    },
    result: result&.to_h,
    execution_result: execution_result&.to_h
  }
end