Skip to content

Commit 509dd2d

Browse files
committed
Add rudimentary default resolver tracker.
1 parent db11d0c commit 509dd2d

2 files changed

Lines changed: 31 additions & 0 deletions

File tree

lib/graphql/schema/field.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -737,7 +737,10 @@ def resolve(object, args, query_ctx)
737737

738738
inner_object = obj.object
739739

740+
tracker = query_ctx.namespace(:shopify)[:default_resolver_tracker]
741+
740742
if !NOT_CONFIGURED.equal?(@hash_key)
743+
tracker&.track(self, :hash_key)
741744
hash_value = if inner_object.is_a?(Hash)
742745
inner_object.key?(@hash_key) ? inner_object[@hash_key] : inner_object[@hash_key_str]
743746
elsif inner_object.respond_to?(:[])
@@ -751,6 +754,7 @@ def resolve(object, args, query_ctx)
751754
hash_value || (@fallback_value != NOT_CONFIGURED ? @fallback_value : nil)
752755
end
753756
elsif obj.respond_to?(resolver_method)
757+
tracker&.track(self, :resolver_method)
754758
method_to_call = resolver_method
755759
method_receiver = obj
756760
# Call the method with kwargs, if there are any
@@ -761,17 +765,22 @@ def resolve(object, args, query_ctx)
761765
end
762766
elsif inner_object.is_a?(Hash)
763767
if @dig_keys
768+
tracker&.track(self, :hash_dig_keys)
764769
inner_object.dig(*@dig_keys)
765770
elsif inner_object.key?(@method_sym)
771+
tracker&.track(self, :hash_method_sym)
766772
inner_object[@method_sym]
767773
elsif inner_object.key?(@method_str) || !inner_object.default_proc.nil?
774+
tracker&.track(self, :hash_method_str)
768775
inner_object[@method_str]
769776
elsif @fallback_value != NOT_CONFIGURED
777+
tracker&.track(self, :hash_fallback)
770778
@fallback_value
771779
else
772780
nil
773781
end
774782
elsif inner_object.respond_to?(@method_sym)
783+
tracker&.track(self, :send_method_sym)
775784
method_to_call = @method_sym
776785
method_receiver = obj.object
777786
if !ruby_kwargs.empty?
@@ -780,6 +789,7 @@ def resolve(object, args, query_ctx)
780789
inner_object.public_send(@method_sym)
781790
end
782791
elsif @fallback_value != NOT_CONFIGURED
792+
tracker&.track(self, :fallback)
783793
@fallback_value
784794
else
785795
raise <<-ERR
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# frozen_string_literal: true
2+
3+
module GraphQL
4+
class Schema
5+
class Field
6+
class DefaultResolverTracker
7+
def initialize
8+
@counts_by_field = Hash.new do |h, k|
9+
h[k] = Hash.new do |h2, k2|
10+
h2[k2] = 0
11+
end
12+
end
13+
end
14+
15+
def track(field, strategy)
16+
@counts_by_field[field.path][strategy] += 1
17+
end
18+
end
19+
end
20+
end
21+
end

0 commit comments

Comments
 (0)