5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# File 'lib/graphql_includable/relay/instrumentation/connection.rb', line 5
def instrument(_type, field)
return field unless field.connection?
required_metadata = [:edges_property, :nodes_property]
requires_instrumentation = required_metadata.any? { |key| field.metadata.key?(key) }
return field unless requires_instrumentation
raise ArgumentError unless required_metadata.all? { |key| field.metadata.key?(key) }
raise ArgumentError if field.property.present?
edges_prop = field.metadata[:edges_property]
nodes_prop = field.metadata[:nodes_property]
_original_resolve = field.resolve_proc
new_resolve_proc = ->(obj, args, ctx) do
ConnectionEdgesAndNodes.new(obj, edges_prop, nodes_prop)
end
field.redefine { resolve(new_resolve_proc) }
end
|