Method: GraphQL::Types::Relay::ConnectionBehaviors::ClassMethods#edge_type

Defined in:
lib/graphql/types/relay/connection_behaviors.rb

#edge_type(edge_type_class, edge_class: GraphQL::Pagination::Connection::Edge, node_type: edge_type_class.node_type, nodes_field: self.has_nodes_field, node_nullable: self.node_nullable, edges_nullable: self.edges_nullable, edge_nullable: self.edge_nullable, field_options: nil) ⇒ Object

Configure this connection to return edges and nodes based on edge_type_class.

This method will use the inputs to create:

  • edges field
  • nodes field
  • description

It's called when you subclass this base connection, trying to use the class name to set defaults. You can call it again in the class definition to override the default (or provide a value, if the default lookup failed).

Parameters:

  • field_options (Hash) (defaults to: nil)

    Any extra keyword arguments to pass to the field :edges, ... and field :nodes, ... configurations



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/graphql/types/relay/connection_behaviors.rb', line 67

def edge_type(edge_type_class, edge_class: GraphQL::Pagination::Connection::Edge, node_type: edge_type_class.node_type, nodes_field: self.has_nodes_field, node_nullable: self.node_nullable, edges_nullable: self.edges_nullable, edge_nullable: self.edge_nullable, field_options: nil)
  # Set this connection's graphql name
  node_type_name = node_type.graphql_name

  @node_type = node_type
  @edge_type = edge_type_class
  @edge_class = edge_class

  base_field_options = {
    name: :edges,
    type: [edge_type_class, null: edge_nullable],
    null: edges_nullable,
    description: "A list of edges.",
    scope: false, # Assume that the connection was already scoped.
    connection: false,
  }

  if field_options
    base_field_options.merge!(field_options)
  end

  field(**base_field_options)

  define_nodes_field(node_nullable, field_options: field_options) if nodes_field

  description("The connection type for #{node_type_name}.")
end