diff --git a/lib/shopify_custom_data_graphql/custom_data_catalog/metafield_definition.rb b/lib/shopify_custom_data_graphql/custom_data_catalog/metafield_definition.rb index 17ca8ef..8f5432c 100644 --- a/lib/shopify_custom_data_graphql/custom_data_catalog/metafield_definition.rb +++ b/lib/shopify_custom_data_graphql/custom_data_catalog/metafield_definition.rb @@ -16,16 +16,7 @@ class CustomDataCatalog } | - MetafieldDefinition = Struct.new( - :key, - :type, - :namespace, - :description, - :validations, - :owner_type, - :schema_namespace, - keyword_init: true - ) do + class MetafieldDefinition class << self def from_graphql(metafield_def) new( @@ -39,8 +30,21 @@ def from_graphql(metafield_def) end end + attr_reader :key, :type, :namespace, :description, :validations, :owner_type + attr_accessor :schema_namespace + + def initialize(key:, type:, namespace:, description:, validations:, owner_type:) + @key = key + @type = type + @namespace = namespace + @description = description + @validations = validations + # need to handle irregulars... + @owner_type = owner_type&.underscore&.upcase || "METAOBJECT" + end + def reference_key - @reference_key ||= [namespace, key].tap(&:compact!).join(".") + @reference_key ||= owner_type == "METAOBJECT" ? key : [namespace, key].tap(&:compact!).join(".") end def schema_key diff --git a/lib/shopify_custom_data_graphql/prepared_query.rb b/lib/shopify_custom_data_graphql/prepared_query.rb index 70ce2d5..c61fca2 100644 --- a/lib/shopify_custom_data_graphql/prepared_query.rb +++ b/lib/shopify_custom_data_graphql/prepared_query.rb @@ -21,9 +21,10 @@ def to_h attr_reader :query, :transforms - def initialize(params) + def initialize(params, document: nil) @query = params["query"] @transforms = params["transforms"] || EMPTY_HASH + @document = document end def as_json @@ -43,7 +44,7 @@ def perform(tracer = DEFAULT_TRACER, source_query: nil) query = source_query && base_query? ? source_query : @query raise ArgumentError, "A source_query is required with empty transformations" if query.nil? - raw_result = tracer.span("proxy") { yield(query) } + raw_result = tracer.span("proxy") { yield(query, @document) } result = if @transforms.any? tracer.span("transform_response") do diff --git a/lib/shopify_custom_data_graphql/request_transformer.rb b/lib/shopify_custom_data_graphql/request_transformer.rb index f37be83..ccb0790 100644 --- a/lib/shopify_custom_data_graphql/request_transformer.rb +++ b/lib/shopify_custom_data_graphql/request_transformer.rb @@ -34,7 +34,7 @@ def transforms end def to_prepared_query - PreparedQuery.new({ "query" => query, "transforms" => transforms }) + PreparedQuery.new({ "query" => query, "transforms" => transforms }, document: @document) end end