# 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