1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
# frozen_string_literal: true
module GraphQL
class Schema
# A possible value for an {Enum}.
#
# You can extend this class to customize enum values in your schema.
#
# @example 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
class EnumValue < GraphQL::Schema::Member
include GraphQL::Schema::Member::HasPath
include GraphQL::Schema::Member::HasAstNode
include GraphQL::Schema::Member::HasDirectives
include GraphQL::Schema::Member::HasDeprecationReason
attr_reader :graphql_name
# @return [Class] The enum type that owns this value
attr_reader :owner
def initialize(graphql_name, desc = nil, owner:, ast_node: nil, directives: nil, description: nil, value: NOT_CONFIGURED, deprecation_reason: nil, &block)
@graphql_name = graphql_name.to_s
GraphQL::NameValidator.validate!(@graphql_name)
@description = desc || description
@value = value == NOT_CONFIGURED ? @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_exec(self, &block)
end
end
def description(new_desc = nil)
if new_desc
@description = new_desc
end
@description
end
def value(new_val = nil)
unless new_val.nil?
@value = new_val
end
@value
end
def inspect
"#<#{self.class} #{path} @value=#{@value.inspect}#{description ? " @description=#{description.inspect}" : ""}>"
end
def visible?(_ctx); true; end
def authorized?(_ctx); true; end
end
end
end
|