Class: Apiwork::Adapter::Capability::Runner
- Inherits:
-
Object
- Object
- Apiwork::Adapter::Capability::Runner
- Defined in:
- lib/apiwork/adapter/capability/runner.rb
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(capabilities, wrapper_type:) ⇒ Runner
constructor
A new instance of Runner.
- #run(data, representation_class, request) ⇒ Object
Constructor Details
#initialize(capabilities, wrapper_type:) ⇒ Runner
Returns a new instance of Runner.
13 14 15 16 |
# File 'lib/apiwork/adapter/capability/runner.rb', line 13 def initialize(capabilities, wrapper_type:) @capabilities = capabilities @wrapper_type = wrapper_type end |
Class Method Details
.run(capabilities, data:, representation_class:, request:, wrapper_type:) ⇒ Object
8 9 10 |
# File 'lib/apiwork/adapter/capability/runner.rb', line 8 def run(capabilities, data:, representation_class:, request:, wrapper_type:) new(capabilities, wrapper_type:).run(data, representation_class, request) end |
Instance Method Details
#run(data, representation_class, request) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/apiwork/adapter/capability/runner.rb', line 18 def run(data, representation_class, request) = {} = {} includes = [] result_data = @capabilities.reduce(data) do |current, capability| result = capability.apply(current, representation_class, request, wrapper_type: @wrapper_type) next current unless result .merge!(result.) if result. .merge!(result. || {}) includes << result.includes if result.includes.present? result.data || current end includes.concat(representation_class.preloads) preloaded = preload_associations(result_data, includes.flatten.compact) [preloaded, , ] end |