graphql_helpers.rb 903 B

1234567891011121314151617181920212223242526272829303132333435
  1. # frozen_string_literal: true
  2. module GraphQLHelpers
  3. # makes snake_case_field_name look like a graphql camelCaseFieldName
  4. # "many_pokemon" => "manyPokemon"
  5. def self.fieldnamerize(underscored_field_name)
  6. graphql_field_name = underscored_field_name.to_s.camelize
  7. graphql_field_name[0] = graphql_field_name[0].downcase
  8. graphql_field_name
  9. end
  10. def self.keys_for_klass(klass)
  11. case klass
  12. when GraphQL::Field
  13. klass.type
  14. else
  15. klass
  16. end.fields.keys
  17. end
  18. def self.arguments_for_field(field)
  19. case field
  20. when GraphQL::Schema::Resolver
  21. field.instance_variable_get('@arguments_by_keyword').map { |_, v| v.name }
  22. else
  23. field.arguments.keys
  24. end
  25. end
  26. # Shortcut for running resolvers #resolve methods
  27. def resolve(resolver_class, obj: nil, args: {}, ctx: {})
  28. resolver_class.new(object: obj, context: ctx).resolve(args)
  29. end
  30. end