Class: GraphQL::Preload::Instrument

Inherits:
Object
  • Object
show all
Defined in:
lib/graphql/preload/instrument.rb

Overview

Provides an instrument for the GraphQL::Field :preload definition

Instance Method Summary collapse

Instance Method Details

#instrument(_type, field) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/graphql/preload/instrument.rb', line 5

def instrument(_type, field)
  return field unless field..include?(:preload)

  old_resolver = field.resolve_proc
  new_resolver = ->(obj, args, ctx) do
    return old_resolver.call(obj, args, ctx) unless obj

    preload(obj, field.[:preload]).then do
      old_resolver.call(obj, args, ctx)
    end
  end

  field.redefine do
    resolve(new_resolver)
  end
end