Class: GraphQL::Client::Definition

Inherits:
Module
  • Object
show all
Defined in:
lib/graphql/client.rb

Direct Known Subclasses

FragmentDefinition, OperationDefinition

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(node:, document:) ⇒ Definition

Returns a new instance of Definition.



31
32
33
34
# File 'lib/graphql/client.rb', line 31

def initialize(node:, document:)
  @definition_node = node
  @document = document
end

Instance Attribute Details

#definition_nodeObject (readonly)

Internal: Get underlying operation or fragment defintion AST node for definition.

Returns OperationDefinition or FragmentDefinition object.



40
41
42
# File 'lib/graphql/client.rb', line 40

def definition_node
  @definition_node
end

#documentObject (readonly)

Public: Get document with only the definitions needed to perform this operation.

Returns GraphQL::Language::Nodes::Document with one OperationDefinition and any FragmentDefinition dependencies.



65
66
67
# File 'lib/graphql/client.rb', line 65

def document
  @document
end

Class Method Details

.for(node:, **kargs) ⇒ Object



20
21
22
23
24
25
26
27
28
29
# File 'lib/graphql/client.rb', line 20

def self.for(node:, **kargs)
  case node
  when Language::Nodes::OperationDefinition
    OperationDefinition.new(node: node, **kargs)
  when Language::Nodes::FragmentDefinition
    FragmentDefinition.new(node: node, **kargs)
  else
    raise TypeError, "expected node to be a definition type, but was #{node.class}"
  end
end

Instance Method Details

#definition_nameObject

Public: Global name of definition in client document.

Returns a GraphQL safe name of the Ruby constant String.

"Users::UserQuery" #=> "Users__UserQuery"

Returns String.



56
57
58
# File 'lib/graphql/client.rb', line 56

def definition_name
  @definition_name ||= name.gsub("::", "__").freeze
end

#nameObject

Public: Ruby constant name of definition.

Returns String or errors if definition was not assigned to a constant.



45
46
47
# File 'lib/graphql/client.rb', line 45

def name
  @name ||= super || raise(RuntimeError, "definition must be assigned to a constant")
end

#new(*args) ⇒ Object



67
68
69
# File 'lib/graphql/client.rb', line 67

def new(*args)
  query_result_class.new(*args)
end