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::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, #initialize, interfaces, kind, own_interfaces, to_graphql

Methods included from Schema::Member::HasFields

add_default_resolve_module, #add_field, extended, #field, #field_class, #fields, #get_field, #global_id_field, #included, #inherited, #own_fields

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

#accessible?, #authorized?, #default_graphql_name, #description, #graphql_name, #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

Constructor Details

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

Class Method Details

.accessible?(ctx) ⇒ Boolean

Returns:



47
48
49
# File 'lib/graphql/types/relay/base_edge.rb', line 47

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

.authorized?(obj, ctx) ⇒ Boolean

Returns:



43
44
45
# File 'lib/graphql/types/relay/base_edge.rb', line 43

def authorized?(obj, ctx)
  true
end

.node_type(node_type = nil) ⇒ Object

Get or set the Object type that this edge wraps.

Parameters:

  • node_type (Class) (defaults to: nil)

    A Schema::Object subclass



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

def node_type(node_type = nil)
  if node_type
    @node_type = node_type
    wrapped_type_name = node_type.graphql_name
    # Set this to be named like the node type, but suffixed with `Edge`
    graphql_name("#{wrapped_type_name}Edge")
    # Add a default `node` field
    field :node, node_type, null: true, description: "The item at the end of the edge."
  end
  @node_type
end

.visible?(ctx) ⇒ Boolean

Returns:



51
52
53
# File 'lib/graphql/types/relay/base_edge.rb', line 51

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