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?, 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
|
# File 'lib/graphql/enum_type.rb', line 95
def add_value(enum_value)
@values_by_name[enum_value.name] = enum_value
end
|
#coerce_result(value, ctx = nil) ⇒ Object
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
# File 'lib/graphql/enum_type.rb', line 108
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}")
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
104
105
106
|
# File 'lib/graphql/enum_type.rb', line 104
def kind
GraphQL::TypeKinds::ENUM
end
|
#to_s ⇒ Object
124
125
126
|
# File 'lib/graphql/enum_type.rb', line 124
def to_s
name
end
|
#values ⇒ Hash<String => EnumValue>
100
101
102
|
# File 'lib/graphql/enum_type.rb', line 100
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
|