class GraphQL::Schema::Enum

end
value :PEPPERS
value :ONIONS
value :MUSHROOMS
class PizzaTopping < GraphQL::Enum
# }
# PEPPERS
# ONIONS
# MUSHROOMS
# enum PizzaTopping {
# equivalent to
@example
You can provide a custom value with the ‘value:` keyword.
By default, GraphQL enum values are translated into Ruby strings.
Extend this class to define GraphQL enums in your schema.

def all_enum_value_definitions

Returns:
  • (Array) - An unfiltered list of all definitions
def all_enum_value_definitions
  all_defns = if superclass.respond_to?(:all_enum_value_definitions)
    superclass.all_enum_value_definitions
  else
    []
  end
  @own_values && @own_values.each do |_key, value|
    if value.is_a?(Array)
      all_defns.concat(value)
    else
      all_defns << value
    end
  end
  all_defns
end

def coerce_input(value_name, ctx)

def coerce_input(value_name, ctx)
  all_values = ctx.warden ? ctx.warden.enum_values(self) : values.each_value
  if v = all_values.find { |val| val.graphql_name == value_name }
    v.value
  elsif v = all_values.find { |val| val.value == value_name }
    # this is for matching default values, which are "inputs", but they're
    # the Ruby value, not the GraphQL string.
    v.value
  else
    nil
  end
end

def coerce_result(value, ctx)

def coerce_result(value, ctx)
  warden = ctx.warden
  all_values = warden ? warden.enum_values(self) : values.each_value
  enum_value = all_values.find { |val| val.value == value }
  if enum_value
    enum_value.graphql_name
  else
    raise self::UnresolvedValueError.new(enum: self, value: value, context: ctx)
  end
end

def enum_value_class(new_enum_value_class = nil)

Returns:
  • (Class) - for handling `value(...)` inputs and building `GraphQL::Enum::EnumValue`s out of them
def enum_value_class(new_enum_value_class = nil)
  if new_enum_value_class
    @enum_value_class = new_enum_value_class
  elsif defined?(@enum_value_class) && @enum_value_class
    @enum_value_class
  else
    superclass <= GraphQL::Schema::Enum ? superclass.enum_value_class : nil
  end
end

def enum_values(context = GraphQL::Query::NullContext.instance)

Returns:
  • (Array) - Possible values of this enum
def enum_values(context = GraphQL::Query::NullContext.instance)
  inherited_values = superclass.respond_to?(:enum_values) ? superclass.enum_values(context) : nil
  visible_values = []
  warden = Warden.from_context(context)
  own_values.each do |key, values_entry|
    if (v = Warden.visible_entry?(:visible_enum_value?, values_entry, context, warden))
      visible_values << v
    end
  end
  if inherited_values
    # Local values take precedence over inherited ones
    inherited_values.each do |i_val|
      if !visible_values.any? { |v| v.graphql_name == i_val.graphql_name }
        visible_values << i_val
      end
    end
  end
  visible_values
end

def inherited(child_class)

def inherited(child_class)
  child_class.const_set(:UnresolvedValueError, Class.new(Schema::Enum::UnresolvedValueError))
  super
end

def kind

def kind
  GraphQL::TypeKinds::ENUM
end

def own_values

def own_values
  @own_values ||= {}
end

def validate_non_null_input(value_name, ctx, max_errors: nil)

def validate_non_null_input(value_name, ctx, max_errors: nil)
  allowed_values = ctx.warden.enum_values(self)
  matching_value = allowed_values.find { |v| v.graphql_name == value_name }
  if matching_value.nil?
    GraphQL::Query::InputValidationResult.from_problem("Expected #{GraphQL::Language.serialize(value_name)} to be one of: #{allowed_values.map(&:graphql_name).join(', ')}")
  else
    nil
  end
end

def value(*args, **kwargs, &block)

Other tags:
    See: {Schema::EnumValue} - which handles these inputs by default

Returns:
  • (void) -

Parameters:
  • deprecation_reason (String) -- if this object is deprecated, include a message here
  • value (Object) -- , the translated Ruby value for this object (defaults to `graphql_name`)
  • description (String) -- , the GraphQL description for this value, present in documentation
  • graphql_name (String, Symbol) -- the GraphQL value for this, usually `SCREAMING_CASE`
def value(*args, **kwargs, &block)
  kwargs[:owner] = self
  value = enum_value_class.new(*args, **kwargs, &block)
  key = value.graphql_name
  prev_value = own_values[key]
  case prev_value
  when nil
    own_values[key] = value
  when GraphQL::Schema::EnumValue
    own_values[key] = [prev_value, value]
  when Array
    prev_value << value
  else
    raise "Invariant: Unexpected enum value for #{key.inspect}: #{prev_value.inspect}"
  end
  value
end

def values(context = GraphQL::Query::NullContext.instance)

Returns:
  • (Hash GraphQL::Schema::EnumValue>) - Possible values of this enum, keyed by name.
def values(context = GraphQL::Query::NullContext.instance)
  enum_values(context).each_with_object({}) { |val, obj| obj[val.graphql_name] = val }
end