Class: Apiwork::Adapter::Capability::Operation::Base
- Inherits:
-
Object
- Object
- Apiwork::Adapter::Capability::Operation::Base
- Defined in:
- lib/apiwork/adapter/capability/operation/base.rb
Overview
Base class for capability Operation phase.
Operation phase runs on each request. Use it to transform data at runtime.
Direct Known Subclasses
Standard::Capability::Filtering::Operation, Standard::Capability::Including::Operation, Standard::Capability::Pagination::Operation, Standard::Capability::Sorting::Operation, Standard::Capability::Writing::Operation
Instance Attribute Summary collapse
-
#data ⇒ Object
readonly
The data for this operation.
-
#options ⇒ Configuration
readonly
The options for this operation.
-
#representation_class ⇒ Class<Representation::Base>
readonly
The representation class for this operation.
- #request ⇒ Object readonly
Class Method Summary collapse
-
.metadata_shape(klass = nil) { ... } ⇒ Class<MetadataShape>?
Defines metadata shape for this operation.
-
.target(value = nil) ⇒ Symbol?
The target for this operation.
Instance Method Summary collapse
-
#apply ⇒ Result?
Applies this operation to the data.
-
#initialize(data, representation_class, options, request, translation_context: {}) ⇒ Base
constructor
A new instance of Base.
-
#result(data: nil, includes: nil, metadata: nil, serialize_options: nil) ⇒ Result
Creates a result object.
-
#translate(*segments, default: nil) ⇒ String?
Translates a key using the adapter’s i18n convention.
Constructor Details
#initialize(data, representation_class, options, request, translation_context: {}) ⇒ Base
Returns a new instance of Base.
92 93 94 95 96 97 98 |
# File 'lib/apiwork/adapter/capability/operation/base.rb', line 92 def initialize(data, representation_class, , request, translation_context: {}) @data = data @representation_class = representation_class @options = @request = request @translation_context = translation_context end |
Instance Attribute Details
#data ⇒ Object (readonly)
The data for this operation.
33 34 35 |
# File 'lib/apiwork/adapter/capability/operation/base.rb', line 33 def data @data end |
#options ⇒ Configuration (readonly)
The options for this operation.
33 34 35 36 |
# File 'lib/apiwork/adapter/capability/operation/base.rb', line 33 attr_reader :data, :options, :representation_class, :request |
#representation_class ⇒ Class<Representation::Base> (readonly)
The representation class for this operation.
33 34 35 36 |
# File 'lib/apiwork/adapter/capability/operation/base.rb', line 33 attr_reader :data, :options, :representation_class, :request |
#request ⇒ Object (readonly)
33 34 35 36 |
# File 'lib/apiwork/adapter/capability/operation/base.rb', line 33 attr_reader :data, :options, :representation_class, :request |
Class Method Details
.metadata_shape(klass = nil) { ... } ⇒ Class<MetadataShape>?
Defines metadata shape for this operation.
Pass a block or a MetadataShape subclass. Blocks are evaluated via instance_exec, providing access to type DSL methods and capability options.
69 70 71 72 73 74 75 76 |
# File 'lib/apiwork/adapter/capability/operation/base.rb', line 69 def (klass = nil, &block) if klass @metadata_shape_class = klass elsif block @metadata_shape_class = (block) end @metadata_shape_class end |
.target(value = nil) ⇒ Symbol?
The target for this operation.
45 46 47 48 |
# File 'lib/apiwork/adapter/capability/operation/base.rb', line 45 def target(value = nil) @target = value if value @target end |
Instance Method Details
#apply ⇒ Result?
Applies this operation to the data.
Override this method to implement transformation logic. Return ‘nil` if no changes are made.
107 108 109 |
# File 'lib/apiwork/adapter/capability/operation/base.rb', line 107 def apply raise NotImplementedError end |
#result(data: nil, includes: nil, metadata: nil, serialize_options: nil) ⇒ Result
Creates a result object.
123 124 125 126 127 128 129 130 |
# File 'lib/apiwork/adapter/capability/operation/base.rb', line 123 def result(data: nil, includes: nil, metadata: nil, serialize_options: nil) Result.new( data:, includes:, metadata:, serialize_options:, ) end |
#translate(*segments, default: nil) ⇒ String?
Translates a key using the adapter’s i18n convention.
Lookup order:
-
‘apiwork.apis.<locale_key>.adapters.<adapter_name>.capabilities.<capability_name>.<segments>`
-
‘apiwork.adapters.<adapter_name>.capabilities.<capability_name>.<segments>`
-
Provided default
150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 |
# File 'lib/apiwork/adapter/capability/operation/base.rb', line 150 def translate(*segments, default: nil) adapter_name = @translation_context[:adapter_name] capability_name = @translation_context[:capability_name] locale_key = @translation_context[:locale_key] key_suffix = segments.join('.') if locale_key api_key = :"apiwork.apis.#{locale_key}.adapters.#{adapter_name}.capabilities.#{capability_name}.#{key_suffix}" result = I18n.translate(api_key, default: nil) return result if result end adapter_key = :"apiwork.adapters.#{adapter_name}.capabilities.#{capability_name}.#{key_suffix}" result = I18n.translate(adapter_key, default: nil) return result if result default end |