Class: GQL::Connection

Inherits:
Field show all
Defined in:
lib/gql/connection.rb

Direct Known Subclasses

Schema::List

Instance Attribute Summary

Attributes inherited from Node

#ast_node, #context, #target, #variables

Class Method Summary collapse

Methods inherited from Node

call, cursor, field, #initialize, method_missing, #raw_value, #value, #value_of_call, #value_of_field, #value_of_fields

Constructor Details

This class inherits a constructor from GQL::Node

Class Method Details

.build_class(id, method, options = {}) ⇒ Object



9
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
# File 'lib/gql/connection.rb', line 9

def build_class(id, method, options = {})
  list_class = options[:list_class] || self.list_class || GQL.default_list_class
  item_class = options[:item_class] || self.item_class

  if list_class.nil?
    raise Errors::UndefinedNodeClass.new(self, 'list')
  end

  unless list_class <= Connection
    raise Errors::InvalidNodeClass.new(list_class, Connection)
  end

  if item_class.nil?
    raise Errors::UndefinedNodeClass.new(self, 'item')
  end

  unless item_class <= Node
    raise Errors::InvalidNodeClass.new(item_class, Node)
  end

  Class.new(list_class).tap do |field_class|
    field_class.id = id.to_s
    field_class.method = method

    field_class.array :edges, item_class: item_class do
      target
    end
  end
end