Class: GraphQL::Types::Relay::BaseEdge

Inherits:
BaseObject show all
Defined in:
lib/graphql/types/relay/base_edge.rb

Overview

A class-based definition for Relay edges.

Use this as a parent class in your app, or use it as inspiration for your own base Edge class.

For example, you may want to extend your own BaseObject instead of the built-in GraphQL::Schema::Object.

Examples:

Making a UserEdge type

# Make a base class for your app
class Types::BaseEdge < GraphQL::Types::Relay::BaseEdge
end

# Then extend your own base class
class Types::UserEdge < Types::BaseEdge
  node_type(Types::User)
end

See Also:

  • for connection types

Constant Summary

Constants included from Schema::Member::HasFields

Schema::Member::HasFields::CONFLICT_FIELD_NAMES, Schema::Member::HasFields::GRAPHQL_RUBY_KEYWORDS, Schema::Member::HasFields::RUBY_KEYWORDS

Constants included from Schema::Member::GraphQLTypeNames

Schema::Member::GraphQLTypeNames::Boolean, Schema::Member::GraphQLTypeNames::ID, Schema::Member::GraphQLTypeNames::Int

Instance Attribute Summary

Attributes inherited from Schema::Object

#context, #object

Class Method Summary collapse

Methods inherited from BaseObject

default_relay, default_relay?, to_graphql

Methods inherited from Schema::Object

authorized_new, fields, implements, inherited, #initialize, interface_type_memberships, interfaces, kind, own_interface_type_memberships, to_graphql

Methods included from Schema::Member::HasFields

#add_field, #field, #field_class, #fields, #get_field, #global_id_field, #own_fields

Methods included from Schema::Member::HasAstNode

#ast_node

Methods included from Schema::Member::HasPath

#path

Methods included from Schema::Member::RelayShortcuts

#connection_type, #connection_type_class, #edge_type, #edge_type_class

Methods included from Schema::Member::Scoped

#scope_items

Methods included from Schema::Member::TypeSystemHelpers

#kind, #list?, #non_null?, #to_list_type, #to_non_null_type, #to_type_signature

Methods included from Schema::Member::BaseDSLMethods::ConfigurationExtension

#inherited

Methods included from Schema::Member::BaseDSLMethods

#accessible?, #authorized?, #default_graphql_name, #description, #graphql_name, #introspection, #introspection?, #mutation, #name, #overridden_graphql_name, #to_graphql, #visible?

Methods included from Relay::TypeExtensions

#connection_type, #define_connection, #define_edge, #edge_type

Methods included from Schema::Member::CachedGraphQLDefinition

#graphql_definition, #initialize_copy, #type_class

Constructor Details

This class inherits a constructor from GraphQL::Schema::Object

Class Method Details

.accessible?(ctx) ⇒ Boolean

Returns:


45
46
47
# File 'lib/graphql/types/relay/base_edge.rb', line 45

def accessible?(ctx)
  node_type.accessible?(ctx)
end

.authorized?(obj, ctx) ⇒ Boolean

Returns:


41
42
43
# File 'lib/graphql/types/relay/base_edge.rb', line 41

def authorized?(obj, ctx)
  true
end

.node_type(node_type = nil, null: true) ⇒ Object

Get or set the Object type that this edge wraps.

Parameters:

  • node_type (Class) (defaults to: nil)

    A Schema::Object subclass

  • null (Boolean) (defaults to: true)

32
33
34
35
36
37
38
39
# File 'lib/graphql/types/relay/base_edge.rb', line 32

def node_type(node_type = nil, null: true)
  if node_type
    @node_type = node_type
    # Add a default `node` field
    field :node, node_type, null: null, description: "The item at the end of the edge."
  end
  @node_type
end

.visible?(ctx) ⇒ Boolean

Returns:


49
50
51
# File 'lib/graphql/types/relay/base_edge.rb', line 49

def visible?(ctx)
  node_type.visible?(ctx)
end