Class: DbFuel::Modeling::RecordTransformer
- Inherits:
-
Object
- Object
- DbFuel::Modeling::RecordTransformer
- Defined in:
- lib/db_fuel/modeling/record_transformer.rb
Overview
Creates attribute renderers based on attributes passed. Also constains methods to transform attribute renderers and include timestamp attributes if needed.
Constant Summary collapse
- NOW_TYPE =
:nodoc:
'r/value/now'- CREATED_AT =
'created_at'- UPDATED_AT =
'updated_at'
Instance Attribute Summary collapse
-
#attribute_renderers ⇒ Object
readonly
Returns the value of attribute attribute_renderers.
-
#resolver ⇒ Object
readonly
Returns the value of attribute resolver.
Instance Method Summary collapse
-
#initialize(resolver:, attributes: []) ⇒ RecordTransformer
constructor
A new instance of RecordTransformer.
- #transform(row, time, keys: Set.new, created_at: false, updated_at: false) ⇒ Object
Constructor Details
#initialize(resolver:, attributes: []) ⇒ RecordTransformer
Returns a new instance of RecordTransformer.
22 23 24 25 26 27 28 29 |
# File 'lib/db_fuel/modeling/record_transformer.rb', line 22 def initialize(resolver:, attributes: []) raise ArgumentError, 'resolver is required' unless resolver @resolver = resolver @attribute_renderers = make_renderers(attributes) freeze end |
Instance Attribute Details
#attribute_renderers ⇒ Object (readonly)
Returns the value of attribute attribute_renderers.
20 21 22 |
# File 'lib/db_fuel/modeling/record_transformer.rb', line 20 def attribute_renderers @attribute_renderers end |
#resolver ⇒ Object (readonly)
Returns the value of attribute resolver.
20 21 22 |
# File 'lib/db_fuel/modeling/record_transformer.rb', line 20 def resolver @resolver end |
Instance Method Details
#transform(row, time, keys: Set.new, created_at: false, updated_at: false) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/db_fuel/modeling/record_transformer.rb', line 31 def transform(row, time, keys: Set.new, created_at: false, updated_at: false) dynamic_attributes, all_keys = make_dynamic_attributes( keys: keys, created_at: created_at, updated_at: updated_at ) dynamic_attributes.each_with_object({}) do |attribute_renderer, memo| next if all_keys.any? && all_keys.exclude?(attribute_renderer.key) value = attribute_renderer.transform(row, time) resolver.set(memo, attribute_renderer.key, value) end end |