module GraphQL::Types::Relay::ConnectionBehaviors::ClassMethods
Attributes
Returns
-
Class
Returns
-
Class
Public Instance Methods
# File lib/graphql/types/relay/connection_behaviors.rb, line 52 def default_broadcastable(new_value) @default_broadcastable = new_value end
Source
# File lib/graphql/types/relay/connection_behaviors.rb, line 48 def default_broadcastable? @default_broadcastable end
Source
# File lib/graphql/types/relay/connection_behaviors.rb, line 44 def default_relay? true end
# File lib/graphql/types/relay/connection_behaviors.rb, line 165 def edge_nullable(new_value = nil) if new_value.nil? defined?(@edge_nullable) ? @edge_nullable : superclass.edge_nullable else @edge_nullable = new_value end end
Set the default edge_nullable for this class and its child classes. (Defaults to true.) Use edge_nullable(false) in your base class to make non-null edge fields.
# File lib/graphql/types/relay/connection_behaviors.rb, line 83 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
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) β Any extra keyword arguments to pass to thefield :edges, ...andfield :nodes, ...configurations
# File lib/graphql/types/relay/connection_behaviors.rb, line 155 def edges_nullable(new_value = nil) if new_value.nil? defined?(@edges_nullable) ? @edges_nullable : superclass.edges_nullable else @edges_nullable = new_value end end
Set the default edges_nullable for this class and its child classes. (Defaults to true.) Use edges_nullable(false) in your base class to make non-null edges fields.
# File lib/graphql/types/relay/connection_behaviors.rb, line 175 def has_nodes_field(new_value = nil) if new_value.nil? defined?(@nodes_field) ? @nodes_field : superclass.has_nodes_field else @nodes_field = new_value end end
Set the default nodes_field for this class and its child classes. (Defaults to true.) Use nodes_field(false) in your base class to prevent adding of a nodes field.
Source
# File lib/graphql/types/relay/connection_behaviors.rb, line 32 def inherited(child_class) super child_class.has_nodes_field(has_nodes_field) child_class.node_nullable(node_nullable) child_class.edges_nullable(edges_nullable) child_class.edge_nullable(edge_nullable) child_class.edge_type = nil child_class.node_type = nil child_class.edge_class = nil child_class.default_broadcastable(default_broadcastable?) end
# File lib/graphql/types/relay/connection_behaviors.rb, line 145 def node_nullable(new_value = nil) if new_value.nil? defined?(@node_nullable) ? @node_nullable : superclass.node_nullable else @node_nullable = new_value end end
Set the default node_nullable for this class and its child classes. (Defaults to true.) Use node_nullable(false) in your base class to make non-null node and nodes fields.
# File lib/graphql/types/relay/connection_behaviors.rb, line 130 def nodes_field(node_nullable: self.node_nullable, field_options: nil) define_nodes_field(node_nullable, field_options: field_options) end
Add the shortcut nodes field to this connection and its subclasses
Source
# File lib/graphql/types/relay/connection_behaviors.rb, line 112 def scope_items(items, context) node_type.scope_items(items, context) end
Filter this list according to the way its node type would scope them
Source
# File lib/graphql/types/relay/connection_behaviors.rb, line 138 def visible?(ctx) # if this is an abstract base class, there may be no `node_type` node_type ? node_type.visible?(ctx) : super end