Class: CDC::Core::ProcessorResult

Inherits:
Object
  • Object
show all
Defined in:
lib/cdc/core/processor_result.rb

Overview

Result returned by processors and pipelines.

ProcessorResult standardizes processor outcomes so callers can distinguish successful processing, skipped events, and failures without relying on processor-specific return values.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(status, event: nil, error: nil, metadata: {}) ⇒ ProcessorResult

Build a processor result with an explicit status.

Parameters:

  • status (#to_sym)

    result status

  • event (ChangeEvent, nil) (defaults to: nil)

    associated event

  • error (Exception, nil) (defaults to: nil)

    associated failure

  • metadata (Hash, EventMetadata) (defaults to: {})

    result metadata



45
46
47
48
49
50
51
# File 'lib/cdc/core/processor_result.rb', line 45

def initialize(status, event: nil, error: nil, metadata: {})
  @status = status.to_sym
  @event = event
  @error = error
  @metadata = .is_a?(EventMetadata) ?  : EventMetadata.new()
  Ractor.make_shareable(self) unless error
end

Instance Attribute Details

#errorSymbol, ... (readonly)

Returns:

  • (Symbol)

    result status

  • (ChangeEvent, nil)

    event associated with the result

  • (Exception, nil)

    failure error, when status is :failure

  • (EventMetadata)

    result metadata



15
16
17
# File 'lib/cdc/core/processor_result.rb', line 15

def error
  @error
end

#eventSymbol, ... (readonly)

Returns:

  • (Symbol)

    result status

  • (ChangeEvent, nil)

    event associated with the result

  • (Exception, nil)

    failure error, when status is :failure

  • (EventMetadata)

    result metadata



15
16
17
# File 'lib/cdc/core/processor_result.rb', line 15

def event
  @event
end

#metadataSymbol, ... (readonly)

Returns:

  • (Symbol)

    result status

  • (ChangeEvent, nil)

    event associated with the result

  • (Exception, nil)

    failure error, when status is :failure

  • (EventMetadata)

    result metadata



15
16
17
# File 'lib/cdc/core/processor_result.rb', line 15

def 
  @metadata
end

#statusSymbol, ... (readonly)

Returns:

  • (Symbol)

    result status

  • (ChangeEvent, nil)

    event associated with the result

  • (Exception, nil)

    failure error, when status is :failure

  • (EventMetadata)

    result metadata



15
16
17
# File 'lib/cdc/core/processor_result.rb', line 15

def status
  @status
end

Class Method Details

.failure(error, event: nil, metadata: {}) ⇒ ProcessorResult

Build a failure result.

Parameters:

  • error (Exception)

    processor error

  • event (ChangeEvent, nil) (defaults to: nil)

    event being processed

  • metadata (Hash, EventMetadata) (defaults to: {})

    result metadata

Returns:



30
# File 'lib/cdc/core/processor_result.rb', line 30

def self.failure(error, event: nil, metadata: {}) = new(:failure, event:, error:, metadata:)

.skipped(event = nil, metadata: {}) ⇒ ProcessorResult

Build a skipped result.

Parameters:

  • event (ChangeEvent, nil) (defaults to: nil)

    skipped event

  • metadata (Hash, EventMetadata) (defaults to: {})

    result metadata

Returns:



37
# File 'lib/cdc/core/processor_result.rb', line 37

def self.skipped(event = nil, metadata: {}) = new(:skipped, event:, metadata:)

.success(event = nil, metadata: {}) ⇒ ProcessorResult

Build a successful result.

Parameters:

  • event (ChangeEvent, nil) (defaults to: nil)

    processed event

  • metadata (Hash, EventMetadata) (defaults to: {})

    result metadata

Returns:



22
# File 'lib/cdc/core/processor_result.rb', line 22

def self.success(event = nil, metadata: {}) = new(:success, event:, metadata:)

Instance Method Details

#failure?Boolean

Returns true when status is :failure.

Returns:

  • (Boolean)

    true when status is :failure



57
# File 'lib/cdc/core/processor_result.rb', line 57

def failure? = status == :failure

#skipped?Boolean

Returns true when status is :skipped.

Returns:

  • (Boolean)

    true when status is :skipped



60
# File 'lib/cdc/core/processor_result.rb', line 60

def skipped? = status == :skipped

#success?Boolean

Returns true when status is :success.

Returns:

  • (Boolean)

    true when status is :success



54
# File 'lib/cdc/core/processor_result.rb', line 54

def success? = status == :success