module GraphQR::QueryField
This extension adds the query_field
method. A helper to create simple queries faster and easier
To use this extension, add extend Graphql::QueryField
on your QueryType
Public Instance Methods
The query_field
method is a helper to create fields and resolver without effort.
Arguments¶ ↑
field_name
(required): the GraphQL query name
active_record_class
(required): the model ActiveRecord class. It can be represented as an array if you want it to return a collection
type_class
(required): The GraphQL type class
scope_class
: A specific InputType that contains the possible scopes that can be applied to your collection. Similar to the has_scope gem. This argument is required for collection fields.
Examples¶ ↑
query_type :user, User, type_class: UserType query_type :users, [User], type_class: UserType, scope_class: UserScopeInput
Collention fields¶ ↑
Collection fields are always paginated using the configured paginator
Its resolver will look for the index?
method on the model Policy. It'll have the optional filter
argument with scope_class
type
Single fields¶ ↑
Single fields have the required id
argument to find the exact record searched. Its resolver will look for the show?
method on the model Policy.
rubocop:disable Metrics/ParameterLists
# File lib/graphqr/query_field.rb, line 46 def query_field(field_name, active_record_class, type_class:, scope_class: nil, **kwargs, &block) is_collection = active_record_class.is_a? Array if is_collection active_record_class = active_record_class.first resolver = collection_resolver(active_record_class, type_class, scope_class) else resolver = resource_resolver(active_record_class, type_class) end field(field_name, paginate: is_collection, resolver: resolver, **kwargs, &block) end