class GraphQL::ResultCache::Key
Public Class Methods
new(obj:, args:, ctx:, key: nil)
click to toggle source
# File lib/graphql/result_cache/key.rb, line 4 def initialize obj:, args:, ctx:, key: nil @obj = obj @args = args @ctx = ctx @key = key end
Public Instance Methods
to_s()
click to toggle source
# File lib/graphql/result_cache/key.rb, line 11 def to_s @to_s ||= [ ::GraphQL::ResultCache.namespace, path_clause, args_clause, object_clause, client_hash_clause ].flatten.compact.join(':') end
Private Instance Methods
args_clause()
click to toggle source
# File lib/graphql/result_cache/key.rb, line 27 def args_clause @args.to_h.to_a.flatten end
client_hash_clause()
click to toggle source
# File lib/graphql/result_cache/key.rb, line 44 def client_hash_clause clause = ::GraphQL::ResultCache.client_hash clause.is_a?(Proc) ? clause.call : clause end
guess_id()
click to toggle source
# File lib/graphql/result_cache/key.rb, line 49 def guess_id object = @obj.object return unless object return object.cache_key if object.respond_to?(:cache_key) return object.id if object.respond_to?(:id) object.object_id end
object_clause()
click to toggle source
# File lib/graphql/result_cache/key.rb, line 31 def object_clause case @key when Symbol @obj.public_send(@key) when Proc @key.call(@obj, @args, @ctx) when NilClass guess_id else @key end end
path_clause()
click to toggle source
# File lib/graphql/result_cache/key.rb, line 23 def path_clause @ctx.path.join('.') end