graphql-cache 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/graphql/cache/fetcher.rb +10 -0
- data/lib/graphql/cache/field.rb +2 -1
- data/lib/graphql/cache/key.rb +12 -0
- data/lib/graphql/cache/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c6f7002428257c6c015fc0a9db823de56c129732591098f7c44a7ce254fe769e
|
4
|
+
data.tar.gz: 74581f477076619693e234c3d7082ab518d463d98de40947f66625901ce24079
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d6abff3fd6c798263f98da3c4ff2f7f443c14c8e59a9f9d221b37199d7e8a635bab9a32f22c976c4c428facb72c455c82af3c996c5afd4ec7a9bab49489d297a
|
7
|
+
data.tar.gz: 7c86dbe1316af159b5872ba668a1600e79d1affbe8b8592a1981f7fbe14842117af3bc09782965e1240240f992ea96af60a217af09e4e7dee41041e7d3b871f9
|
@@ -1,6 +1,16 @@
|
|
1
1
|
module GraphQL
|
2
2
|
module Cache
|
3
|
+
# Represents the "instrumenter" passed to GraphQL::Schema#instrument
|
4
|
+
# when the plugin in initialized (i.e. `use GraphQL::Cache`)
|
3
5
|
class Fetcher
|
6
|
+
# Redefines the given field's resolve proc to use our
|
7
|
+
# custom cache wrapping resolver proc. Called from
|
8
|
+
# graphql-ruby internals. This is the "instrumenter"
|
9
|
+
# entrypoint.
|
10
|
+
#
|
11
|
+
# @param type [GraphQL::Schema::Object] graphql-ruby passes the defined type for the field being instrumented
|
12
|
+
# @param field [GraphQL::Schema::Field] graphql-ruby passes the field definition to be re-defined
|
13
|
+
# @return [GraphQL::Schema::Field]
|
4
14
|
def instrument(type, field)
|
5
15
|
return field unless field.metadata[:cache]
|
6
16
|
|
data/lib/graphql/cache/field.rb
CHANGED
@@ -5,7 +5,7 @@ module GraphQL
|
|
5
5
|
# Custom field class implementation to allow for
|
6
6
|
# cache config keyword parameters
|
7
7
|
class Field < ::GraphQL::Schema::Field
|
8
|
-
#
|
8
|
+
# Overriden to take a new cache keyword argument
|
9
9
|
def initialize(
|
10
10
|
*args,
|
11
11
|
cache: false,
|
@@ -16,6 +16,7 @@ module GraphQL
|
|
16
16
|
super(*args, **kwargs, &block)
|
17
17
|
end
|
18
18
|
|
19
|
+
# Overriden to provide custom cache config to internal definition
|
19
20
|
def to_graphql
|
20
21
|
field_defn = super # Returns a GraphQL::Field
|
21
22
|
field_defn.metadata[:cache] = @cache_config
|
data/lib/graphql/cache/key.rb
CHANGED
@@ -19,6 +19,11 @@ module GraphQL
|
|
19
19
|
attr_accessor :metadata
|
20
20
|
|
21
21
|
# Initializes a new Key with the given graphql query context
|
22
|
+
#
|
23
|
+
# @param obj [Object] The resolved parent object for a field's resolution
|
24
|
+
# @param args [GraphQL::Arguments] The internal graphql-ruby wrapper for field arguments
|
25
|
+
# @param type [GraphQL::Schema::Type] The type definition of the parent object
|
26
|
+
# @param field [GraphQL::Schema::Field] The field being resolved
|
22
27
|
def initialize(obj, args, type, field)
|
23
28
|
@object = obj.object
|
24
29
|
@arguments = args
|
@@ -31,6 +36,12 @@ module GraphQL
|
|
31
36
|
|
32
37
|
# Returns the string representation of this cache key
|
33
38
|
# suitable for using as a key when writing to cache
|
39
|
+
#
|
40
|
+
# The key is constructed with this structure:
|
41
|
+
#
|
42
|
+
# ```
|
43
|
+
# namespace:type:field:arguments:object-id
|
44
|
+
# ```
|
34
45
|
def to_s
|
35
46
|
@to_s ||= [
|
36
47
|
GraphQL::Cache.namespace,
|
@@ -79,6 +90,7 @@ module GraphQL
|
|
79
90
|
|
80
91
|
# @private
|
81
92
|
def guess_id
|
93
|
+
return object.cache_key_with_version if object.respond_to?(:cache_key_with_version)
|
82
94
|
return object.cache_key if object.respond_to?(:cache_key)
|
83
95
|
return object.id if object.respond_to?(:id)
|
84
96
|
object.object_id
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: graphql-cache
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Kelly
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-10-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: appraisal
|