Class: ActiveShopifyGraphQL::ModelBuilder
- Inherits:
-
Object
- Object
- ActiveShopifyGraphQL::ModelBuilder
- Defined in:
- lib/active_shopify_graphql/model_builder.rb
Overview
Pure factory for building model instances from attribute hashes. Separates data mapping (Loader/ResponseMapper) from object construction.
Responsibilities:
- Build single model instances from attributes
- Apply connection caches to instances
- Handle batch building with connection caching
Class Method Summary collapse
-
.apply_connection_cache(instance, attributes) ⇒ Object
Apply connection cache from attributes to an already-instantiated model.
-
.build(model_class, attributes) ⇒ Object
Build a single model instance from attributes.
-
.build_many(model_class, attributes_array) ⇒ Array<Object>
Build multiple model instances from an array of attribute hashes.
Class Method Details
.apply_connection_cache(instance, attributes) ⇒ Object
Apply connection cache from attributes to an already-instantiated model
46 47 48 49 50 |
# File 'lib/active_shopify_graphql/model_builder.rb', line 46 def apply_connection_cache(instance, attributes) return unless attributes.is_a?(Hash) && attributes.key?(:_connection_cache) instance.instance_variable_set(:@_connection_cache, attributes[:_connection_cache]) end |
.build(model_class, attributes) ⇒ Object
Build a single model instance from attributes
25 26 27 28 29 30 31 |
# File 'lib/active_shopify_graphql/model_builder.rb', line 25 def build(model_class, attributes) return nil if attributes.nil? instance = model_class.new(attributes) apply_connection_cache(instance, attributes) instance end |
.build_many(model_class, attributes_array) ⇒ Array<Object>
Build multiple model instances from an array of attribute hashes
37 38 39 40 41 |
# File 'lib/active_shopify_graphql/model_builder.rb', line 37 def build_many(model_class, attributes_array) return [] if attributes_array.nil? || attributes_array.empty? attributes_array.filter_map { |attrs| build(model_class, attrs) } end |