Class: GraphQL::Client::GraphObject
- Inherits:
-
Object
- Object
- GraphQL::Client::GraphObject
- Includes:
- Deserialization
- Defined in:
- lib/graphql_client/graph_object.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#data ⇒ Object
readonly
Returns the value of attribute data.
-
#parent ⇒ Object
readonly
Returns the value of attribute parent.
-
#query ⇒ Object
readonly
Returns the value of attribute query.
Instance Method Summary collapse
- #build_minimal_query ⇒ Object
-
#initialize(query:, data:, parent: nil) ⇒ GraphObject
constructor
A new instance of GraphObject.
Constructor Details
#initialize(query:, data:, parent: nil) ⇒ GraphObject
Returns a new instance of GraphObject.
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/graphql_client/graph_object.rb', line 10 def initialize(query:, data:, parent: nil) @query = query @data = Hash(data) @parent = parent @data.each do |field_name, value| field = query.selection_set.lookup(field_name) graph_object = case value when Hash klass = if field.connection? GraphConnection elsif field.node? GraphNode else GraphObject end klass.new(query: field, data: value, parent: self) when Array value.map do |v| if v.is_a? Hash self.class.new(query: field, data: v, parent: self) else v end end else value end create_accessor_methods(field_name, graph_object) end end |
Instance Attribute Details
#data ⇒ Object (readonly)
Returns the value of attribute data.
8 9 10 |
# File 'lib/graphql_client/graph_object.rb', line 8 def data @data end |
#parent ⇒ Object (readonly)
Returns the value of attribute parent.
8 9 10 |
# File 'lib/graphql_client/graph_object.rb', line 8 def parent @parent end |
#query ⇒ Object (readonly)
Returns the value of attribute query.
8 9 10 |
# File 'lib/graphql_client/graph_object.rb', line 8 def query @query end |
Instance Method Details
#build_minimal_query ⇒ Object
45 46 47 48 49 50 51 52 53 |
# File 'lib/graphql_client/graph_object.rb', line 45 def build_minimal_query if parent parent.build_minimal_query do |context| yield context.add_field(query.field_defn.name, as: query.name, **query.arguments) end else Query::QueryDocument.new(query.schema) { |root| yield root } end end |