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
   = 
  @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

#metadata ⇒ MetadataProxy

Access metadata through a proxy object

Returns:



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

def 
   ||= MetadataProxy.new()
end