Class: Yes::Core::CommandHandling::PayloadProxy

Inherits:
Object
  • Object
show all
Defined in:
lib/yes/core/command_handling/payload_proxy.rb

Overview

Provides proxy access to command payload with dynamic aggregate resolution

Instance Method Summary collapse

Constructor Details

#initialize(raw_payload:, context:, parent_aggregates:, raw_metadata: nil, aggregate_tracker: nil) ⇒ PayloadProxy

Returns a new instance of PayloadProxy.

Parameters:

  • raw_payload (Hash)

    The raw command payload

  • raw_metadata (Hash, nil) (defaults to: nil)

    The raw command metadata (optional)

  • context (String)

    The context name

  • aggregate_tracker (AggregateTracker, nil) (defaults to: nil)

    The tracker instance (optional)



12
13
14
15
16
17
18
# File 'lib/yes/core/command_handling/payload_proxy.rb', line 12

def initialize(raw_payload:, context:, parent_aggregates:, raw_metadata: nil, aggregate_tracker: nil)
  @raw_payload = raw_payload
  @raw_metadata = 
  @context = context
  @parent_aggregates = parent_aggregates
  @aggregate_tracker = aggregate_tracker
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method_name, *args) { ... } ⇒ Object (private)

Handles dynamic method calls to access payload values or resolve aggregates

Parameters:

  • method_name (Symbol)

    The method being called

  • args (Array)

    Method arguments (unused)

Yields:

  • Optional block passed to the method (unused)

Yield Returns:

  • (void)

Returns:

  • (Object)

    The payload value or resolved aggregate



44
45
46
47
48
49
50
51
52
# File 'lib/yes/core/command_handling/payload_proxy.rb', line 44

def method_missing(method_name, *args, &)
  if raw_payload.key?(method_name)
    raw_payload[method_name]
  elsif raw_payload.key?(:"#{method_name}_id")
    resolve_aggregate(method_name)
  else
    super
  end
end

Instance Method Details

#metadataMetadataProxy

Access metadata through a proxy object

Returns:



29
30
31
# File 'lib/yes/core/command_handling/payload_proxy.rb', line 29

def 
  @metadata ||= MetadataProxy.new(@raw_metadata)
end