Class: GraphQL::EnumType
Overview
Represents a collection of related values.
By convention, enum names are SCREAMING_CASE_NAMES,
but other identifiers are supported too.
You can use as return types or as inputs.
By default, enums are passed to resolve functions as
the strings that identify them, but you can provide a
custom Ruby value with the value: keyword.
Defined Under Namespace
Classes: EnumValue, UnresolvedValueError
Instance Attribute Summary
Attributes inherited from BaseType
#default_relay, #default_scalar, #description, #introspection, #name
Instance Method Summary
collapse
Methods inherited from BaseType
#==, #coerce_input, #coerce_isolated_input, #coerce_isolated_result, #connection_type, #default_relay?, #default_scalar?, #define_connection, #define_edge, #edge_type, #get_field, #introspection?, #list?, #non_null?, resolve_related_type, #resolve_type, #to_definition, #to_list_type, #to_non_null_type, #unwrap, #valid_input?, #valid_isolated_input?, #validate_input, #validate_isolated_input
#define, #metadata, #redefine
#!
Constructor Details
78
79
80
81
|
# File 'lib/graphql/enum_type.rb', line 78
def initialize
super
@values_by_name = {}
end
|
Instance Method Details
#add_value(enum_value) ⇒ Object
95
96
97
98
99
100
101
|
# File 'lib/graphql/enum_type.rb', line 95
def add_value(enum_value)
if @values_by_name.key?(enum_value.name)
raise "Enum value names must be unique. Value `#{enum_value.name}` already exists on Enum `#{name}`."
end
@values_by_name[enum_value.name] = enum_value
end
|
#coerce_result(value, ctx = nil) ⇒ Object
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
# File 'lib/graphql/enum_type.rb', line 112
def coerce_result(value, ctx = nil)
if ctx.nil?
warn_deprecated_coerce("coerce_isolated_result")
ctx = GraphQL::Query::NullContext
end
warden = ctx.warden
all_values = warden ? warden.enum_values(self) : @values_by_name.each_value
enum_value = all_values.find { |val| val.value == value }
if enum_value
enum_value.name
else
raise(UnresolvedValueError, "Can't resolve enum #{name} for #{value.inspect}")
end
end
|
#initialize_copy(other) ⇒ Object
83
84
85
86
|
# File 'lib/graphql/enum_type.rb', line 83
def initialize_copy(other)
super
self.values = other.values.values
end
|
#kind ⇒ Object
108
109
110
|
# File 'lib/graphql/enum_type.rb', line 108
def kind
GraphQL::TypeKinds::ENUM
end
|
#to_s ⇒ Object
128
129
130
|
# File 'lib/graphql/enum_type.rb', line 128
def to_s
name
end
|
#values ⇒ Hash<String => EnumValue>
104
105
106
|
# File 'lib/graphql/enum_type.rb', line 104
def values
@values_by_name
end
|
#values=(new_values) ⇒ Object
89
90
91
92
|
# File 'lib/graphql/enum_type.rb', line 89
def values=(new_values)
@values_by_name = {}
new_values.each { |enum_value| add_value(enum_value) }
end
|