class GraphQL::Schema::Argument
Constants
- NO_DEFAULT
Attributes
@return [String] the GraphQL name for this argument, camelized unless `camelize: false` is provided
@return [Symbol] This argument's name in Ruby keyword arguments
@return [String] the GraphQL name for this argument, camelized unless `camelize: false` is provided
@return [GraphQL::Schema::Field, Class] The field or input object this argument belongs to
@return [Symbol] A method to call to transform this value before sending it to field resolution method
Public Class Methods
@param arg_name [Symbol] @param type_expr @param desc [String] @param required [Boolean] if true, this argument is non-null; if false, this argument is nullable @param description [String] @param default_value [Object] @param as [Symbol] Override the keyword name when passed to a method @param prepare [Symbol] A method to call to tranform this argument's valuebefore sending it to field resolution @param camelize [Boolean] if true, the name will be camelized when building the schema
# File lib/graphql/schema/argument.rb, line 31 def initialize(arg_name = nil, type_expr = nil, desc = nil, required,, type: nil, name: nil, description: nil, default_value: NO_DEFAULT, as: nil, camelize: true, prepare: nil, owner,, &definition_block) arg_name ||= name @name = camelize ? Member::BuildType.camelize(arg_name.to_s) : arg_name.to_s @type_expr = type_expr || type @description = desc || description @null = !required @default_value = default_value @owner = owner @as = as @keyword = as || Schema::Member::BuildType.underscore(@name).to_sym @prepare = prepare if definition_block instance_eval(&definition_block) end end
Public Instance Methods
# File lib/graphql/schema/argument.rb, line 60 def accessible?(context) true end
# File lib/graphql/schema/argument.rb, line 48 def description(text = nil) if text @description = text else @description end end
Apply the {prepare} configuration to `value`, using methods from `obj`. Used by the runtime. @api private
# File lib/graphql/schema/argument.rb, line 90 def prepare_value(obj, value) case @prepare when nil value when Symbol, String obj.public_send(@prepare, value) when Proc @prepare.call(value, obj.context) else raise "Invalid prepare for #{@owner.name}.name: #{@prepare.inspect}" end end
# File lib/graphql/schema/argument.rb, line 68 def to_graphql argument = GraphQL::Argument.new argument.name = @name argument.type = -> { type } argument.description = @description argument.metadata[:type_class] = self argument.as = @as if NO_DEFAULT != @default_value argument.default_value = @default_value end argument end
# File lib/graphql/schema/argument.rb, line 81 def type @type ||= Member::BuildType.parse_type(@type_expr, null: @null) rescue StandardError => err raise ArgumentError, "Couldn't build type for Argument #{@owner.name}.#{name}: #{err.class.name}: #{err.message}", err.backtrace end
# File lib/graphql/schema/argument.rb, line 56 def visible?(context) true end