| 1234567891011121314151617181920212223242526272829303132333435 |
- # frozen_string_literal: true
- module GraphQLHelpers
- # makes snake_case_field_name look like a graphql camelCaseFieldName
- # "many_pokemon" => "manyPokemon"
- def self.fieldnamerize(underscored_field_name)
- graphql_field_name = underscored_field_name.to_s.camelize
- graphql_field_name[0] = graphql_field_name[0].downcase
- graphql_field_name
- end
- def self.keys_for_klass(klass)
- case klass
- when GraphQL::Field
- klass.type
- else
- klass
- end.fields.keys
- end
- def self.arguments_for_field(field)
- case field
- when GraphQL::Schema::Resolver
- field.instance_variable_get('@arguments_by_keyword').map { |_, v| v.name }
- else
- field.arguments.keys
- end
- end
- # Shortcut for running resolvers #resolve methods
- def resolve(resolver_class, obj: nil, args: {}, ctx: {})
- resolver_class.new(object: obj, context: ctx).resolve(args)
- end
- end
|