Module: GraphQL::Relay::ConnectionType

Defined in:
lib/graphql/relay/connection_type.rb

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.bidirectional_paginationBoolean

Returns If true, connections check for reverse-direction has*Page values.

Returns:

  • (Boolean)

    If true, connections check for reverse-direction has*Page values



9
10
11
# File 'lib/graphql/relay/connection_type.rb', line 9

def bidirectional_pagination
  @bidirectional_pagination
end

.default_nodes_fieldBoolean

Returns If true, connection types get a nodes shortcut field.

Returns:

  • (Boolean)

    If true, connection types get a nodes shortcut field



7
8
9
# File 'lib/graphql/relay/connection_type.rb', line 7

def default_nodes_field
  @default_nodes_field
end

Class Method Details

.create_type(wrapped_type, edge_type: wrapped_type.edge_type, edge_class: GraphQL::Relay::Edge, nodes_field: ConnectionType.default_nodes_field, &block) ⇒ Object

Create a connection which exposes edges of this type



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/graphql/relay/connection_type.rb', line 16

def self.create_type(wrapped_type, edge_type: wrapped_type.edge_type, edge_class: GraphQL::Relay::Edge, nodes_field: ConnectionType.default_nodes_field, &block)
  custom_edge_class = edge_class

  # Any call that would trigger `wrapped_type.ensure_defined`
  # must be inside this lazy block, otherwise we get weird
  # cyclical dependency errors :S
  ObjectType.define do
    name("#{wrapped_type.name}Connection")
    description("The connection type for #{wrapped_type.name}.")
    field :edges, types[edge_type], "A list of edges.", edge_class: custom_edge_class, property: :edge_nodes

    if nodes_field
      field :nodes, types[wrapped_type],  "A list of nodes.", property: :edge_nodes
    end

    field :pageInfo, !PageInfo, "Information to aid in pagination.", property: :page_info
    block && instance_eval(&block)
  end
end