Sha256: 101b27fe4a0bf67f47dc278fe3bca2219ef572253253e977065c4f900e81f390
Contents?: true
Size: 1.09 KB
Versions: 1
Compression:
Stored size: 1.09 KB
Contents
# frozen_string_literal: true require 'graphql_preload_queries/extensions/preload' Rails.application.config.to_prepare do # Custom preload field for Object types Types::BaseObject.class_eval do # @param key field[:key] # @param type field[:type] # @param settings field[:settings] ++ { preload: {} } # preload: (Hash) { allPosts: [:posts, { author: :author }] } # ==> <cat1>.preload(posts: :author) // if author and posts are in query # ==> <cat1>.preload(:posts) // if only author is in the query # ==> <cat1>.preload() // if both of them are not in the query # TODO: ability to merge extensions + extras def self.preload_field(key, type, settings = {}) klass = GraphqlPreloadQueries::Extensions::Preload custom_attrs = { extras: [:ast_node], extensions: [klass => settings.delete(:preload)] } field key, type, settings.merge(custom_attrs) # Fix: omit non expected "extras" param auto provided by graphql define_method(key) { |_omit_non_used_args| object.send(key) } unless method_defined? key end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
graphql_preload_queries-0.1.0 | config/initializers/add_preload_field.rb |