class GraphQL::DefinitionHelpers::DefinedByConfig::DefinitionConfig
Then, the applicable properties of this object are transfered to the given instance.
This object is ‘instance_eval`’d when defining any object in the schema.
def self.attr_definable(*names)
def self.attr_definable(*names) attr_accessor(*names) names.each do |name| ivar_name = "@#{name}".to_sym define_method(name) do |new_value=nil| new_value && self.instance_variable_set(ivar_name, new_value) instance_variable_get(ivar_name) end end end
def argument(name, type, description = nil, default_value: nil)
def argument(name, type, description = nil, default_value: nil) argument = GraphQL::Argument.new argument.name = name.to_s argument.type = type argument.description = description argument.default_value = default_value @arguments[name.to_s] = argument end
def field(name, type = nil, desc = nil, field: nil, property: nil, &block)
def field(name, type = nil, desc = nil, field: nil, property: nil, &block) if block_given? field = GraphQL::Field.define(&block) else field ||= GraphQL::Field.new end type && field.type = type desc && field.description = desc property && field.resolve = -> (t,a,c) { t.public_send(property)} field.name ||= name.to_s fields[name.to_s] = field end
def initialize
def initialize @interfaces = [] @possible_types = [] @on = [] @fields = {} @arguments = {} @values = [] @input_fields = {} end
def input_field(name, type = nil, desc = nil, default_value: nil, &block)
def input_field(name, type = nil, desc = nil, default_value: nil, &block) argument = if block_given? GraphQL::Argument.define(&block) else GraphQL::Argument.new end argument.name = name type && argument.type = type desc && argument.description = desc default_value && argument.default_value = default_value input_fields[name.to_s] = argument end
def to_instance(object, attributes)
def to_instance(object, attributes) attributes.each do |attr_name| configured_value = self.public_send(attr_name) object.public_send("#{attr_name}=", configured_value) end object end
def types
def types GraphQL::DefinitionHelpers::TypeDefiner.instance end
def value(name, desc = nil, deprecation_reason: nil, value: name)
def value(name, desc = nil, deprecation_reason: nil, value: name) values << GraphQL::EnumType::EnumValue.new(name: name, description: desc, deprecation_reason: deprecation_reason, value: value) end