Class: GraphQL::Schema::EnumValue

Inherits:
Member
  • Object
show all
Includes:
Member::HasAstNode, Member::HasDeprecationReason, Member::HasDirectives, Member::HasPath
Defined in:
lib/graphql/schema/enum_value.rb

Overview

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
end

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

Constant Summary

Constants included from Member::HasDirectives

Member::HasDirectives::NO_DIRECTIVES

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::HasDeprecationReason

#deprecation_reason, #deprecation_reason=

Methods included from Member::HasDirectives

#directive, #directives, #remove_directive

Methods included from Member::HasAstNode

#ast_node

Methods included from Member::HasPath

#path

Methods included from Member::BaseDSLMethods

#default_graphql_name, #introspection, #introspection?, #mutation, #name, #overridden_graphql_name

Methods included from Member::BaseDSLMethods::ConfigurationExtension

#inherited

Methods included from Member::TypeSystemHelpers

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

Methods included from Member::Scoped

#scope_items

Methods included from Member::RelayShortcuts

#connection_type, #connection_type_class, #edge_type, #edge_type_class

Constructor Details

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

Returns a new instance of EnumValue.



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/graphql/schema/enum_value.rb', line 33

def initialize(graphql_name, desc = nil, owner:, ast_node: nil, directives: nil, description: nil, value: nil, deprecation_reason: nil, &block)
  @graphql_name = graphql_name.to_s
  GraphQL::NameValidator.validate!(@graphql_name)
  @description = desc || description
  @value = value.nil? ? @graphql_name : value
  if deprecation_reason
    self.deprecation_reason = deprecation_reason
  end
  @owner = owner
  @ast_node = ast_node
  if directives
    directives.each do |dir_class, dir_options|
      directive(dir_class, **dir_options)
    end
  end

  if block_given?
    instance_eval(&block)
  end
end

Instance Attribute Details

#graphql_nameObject (readonly)

Returns the value of attribute graphql_name.



28
29
30
# File 'lib/graphql/schema/enum_value.rb', line 28

def graphql_name
  @graphql_name
end

#ownerClass (readonly)

Returns The enum type that owns this value.

Returns:

  • (Class)

    The enum type that owns this value



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

def owner
  @owner
end

Instance Method Details

#accessible?(_ctx) ⇒ Boolean

Returns:



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

def accessible?(_ctx); true; end

#authorized?(_ctx) ⇒ Boolean

Returns:



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

def authorized?(_ctx); true; end

#description(new_desc = nil) ⇒ Object



54
55
56
57
58
59
# File 'lib/graphql/schema/enum_value.rb', line 54

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

#inspectObject



68
69
70
# File 'lib/graphql/schema/enum_value.rb', line 68

def inspect
  "#<#{self.class} #{path} @value=#{@value.inspect}#{description ? " @description=#{description.inspect}" : ""}>"
end

#value(new_val = nil) ⇒ Object



61
62
63
64
65
66
# File 'lib/graphql/schema/enum_value.rb', line 61

def value(new_val = nil)
  unless new_val.nil?
    @value = new_val
  end
  @value
end

#visible?(_ctx) ⇒ Boolean

Returns:



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

def visible?(_ctx); true; end