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
Instance Method Summary collapse
- #add_value(enum_value) ⇒ Object
-
#coerce_non_null_input(value_name) ⇒ Object
Get the underlying value for this enum value.
- #coerce_result(value) ⇒ Object
-
#initialize ⇒ EnumType
constructor
A new instance of EnumType.
- #kind ⇒ Object
- #to_s ⇒ Object
- #validate_non_null_input(value_name) ⇒ Object
- #values ⇒ Object
- #values=(new_values) ⇒ Object
Methods inherited from BaseType
#==, #coerce_input, #connection_type, #define_connection, #define_edge, #edge_type, #get_field, resolve_related_type, #resolve_type, #to_list_type, #to_non_null_type, #unwrap, #valid_input?, #validate_input
Methods included from Define::InstanceDefinable
#definition_proc=, included, #metadata
Methods included from Define::NonNullWithBang
Constructor Details
#initialize ⇒ EnumType
Returns a new instance of EnumType.
61 62 63 64 |
# File 'lib/graphql/enum_type.rb', line 61 def initialize @values_by_name = {} @values_by_value = {} end |
Instance Method Details
#add_value(enum_value) ⇒ Object
72 73 74 75 |
# File 'lib/graphql/enum_type.rb', line 72 def add_value(enum_value) @values_by_name[enum_value.name] = enum_value @values_by_value[enum_value.value] = enum_value end |
#coerce_non_null_input(value_name) ⇒ Object
Get the underlying value for this enum value
105 106 107 108 109 110 111 112 |
# File 'lib/graphql/enum_type.rb', line 105 def coerce_non_null_input(value_name) ensure_defined if @values_by_name.key?(value_name) @values_by_name.fetch(value_name).value else nil end end |
#coerce_result(value) ⇒ Object
114 115 116 117 |
# File 'lib/graphql/enum_type.rb', line 114 def coerce_result(value) ensure_defined @values_by_value.fetch(value).name end |
#kind ⇒ Object
82 83 84 |
# File 'lib/graphql/enum_type.rb', line 82 def kind GraphQL::TypeKinds::ENUM end |
#to_s ⇒ Object
119 120 121 |
# File 'lib/graphql/enum_type.rb', line 119 def to_s name end |
#validate_non_null_input(value_name) ⇒ Object
86 87 88 89 90 91 92 93 94 95 |
# File 'lib/graphql/enum_type.rb', line 86 def validate_non_null_input(value_name) ensure_defined result = GraphQL::Query::InputValidationResult.new if !@values_by_name.key?(value_name) result.add_problem("Expected #{JSON.dump(value_name)} to be one of: #{@values_by_name.keys.join(', ')}") end result end |
#values ⇒ Object
77 78 79 80 |
# File 'lib/graphql/enum_type.rb', line 77 def values ensure_defined @values_by_name end |
#values=(new_values) ⇒ Object
66 67 68 69 70 |
# File 'lib/graphql/enum_type.rb', line 66 def values=(new_values) @values_by_name = {} @values_by_value = {} new_values.each { |enum_value| add_value(enum_value) } end |