Class: GraphQL::Schema::EnumValue Private

Inherits:
Member
  • Object
show all
Includes:
Member::AcceptsDefinition
Defined in:
lib/graphql/schema/enum_value.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

A possible value for an Enum.

You can extend this class to customize enum values in your schema.

Examples:

custom enum value class

# define a custom class:
class CustomEnumValue < GraphQL::Schema::EnumValue
  def initialize(*args)
    # arguments to `value(...)` in Enum classes are passed here
    super
  end

  def to_graphql
    enum_value = super
    # customize the derived GraphQL::EnumValue here
    enum_value
  end
end

class BaseEnum < GraphQL::Schema::Enum
  # use it for these enums:
  enum_value_class CustomEnumValue
end

Constant Summary

Constants included from Member::GraphQLTypeNames

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Member::TypeSystemHelpers

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

Methods included from Member::BaseDSLMethods

#introspection, #mutation, #name, #overridden_graphql_name

Methods included from Relay::TypeExtensions

#connection_type, #define_connection, #define_edge, #edge_type

Methods included from Member::CachedGraphQLDefinition

#graphql_definition, #initialize_copy

Constructor Details

#initialize(graphql_name, desc = nil, owner:, description: nil, value: nil, deprecation_reason: nil, &block) ⇒ EnumValue

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a new instance of EnumValue



39
40
41
42
43
44
45
46
47
48
49
# File 'lib/graphql/schema/enum_value.rb', line 39

def initialize(graphql_name, desc = nil, owner:, description: nil, value: nil, deprecation_reason: nil, &block)
  @graphql_name = graphql_name.to_s
  @description = desc || description
  @value = value || @graphql_name
  @deprecation_reason = deprecation_reason
  @owner = owner

  if block_given?
    instance_eval(&block)
  end
end

Instance Attribute Details

#deprecation_reasonString

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns Explains why this value was deprecated (if present, this will be marked deprecated in introspection)

Returns:

  • (String)

    Explains why this value was deprecated (if present, this will be marked deprecated in introspection)



37
38
39
# File 'lib/graphql/schema/enum_value.rb', line 37

def deprecation_reason
  @deprecation_reason
end

#graphql_nameObject (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



31
32
33
# File 'lib/graphql/schema/enum_value.rb', line 31

def graphql_name
  @graphql_name
end

#ownerClass (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns The enum type that owns this value

Returns:

  • (Class)

    The enum type that owns this value



34
35
36
# File 'lib/graphql/schema/enum_value.rb', line 34

def owner
  @owner
end

Instance Method Details

#accessible?(_ctx) ⇒ Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:



77
# File 'lib/graphql/schema/enum_value.rb', line 77

def accessible?(_ctx); true; end

#authorized?(_ctx) ⇒ Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:



78
# File 'lib/graphql/schema/enum_value.rb', line 78

def authorized?(_ctx); true; end

#description(new_desc = nil) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



51
52
53
54
55
56
# File 'lib/graphql/schema/enum_value.rb', line 51

def description(new_desc = nil)
  if new_desc
    @description = new_desc
  end
  @description
end

#to_graphqlGraphQL::EnumType::EnumValue

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns A runtime-ready object derived from this object

Returns:



66
67
68
69
70
71
72
73
74
# File 'lib/graphql/schema/enum_value.rb', line 66

def to_graphql
  enum_value = GraphQL::EnumType::EnumValue.new
  enum_value.name = @graphql_name
  enum_value.description = @description
  enum_value.value = @value
  enum_value.deprecation_reason = @deprecation_reason
  enum_value.[:type_class] = self
  enum_value
end

#value(new_val = nil) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



58
59
60
61
62
63
# File 'lib/graphql/schema/enum_value.rb', line 58

def value(new_val = nil)
  if new_val
    @value = new_val
  end
  @value
end

#visible?(_ctx) ⇒ Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:



76
# File 'lib/graphql/schema/enum_value.rb', line 76

def visible?(_ctx); true; end