graphql-fragment_cache 1.4.1 → 1.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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fc02c6847d8e55983814bba96e0bd303893a1639648530048f0ccf6ab1527eab
|
4
|
+
data.tar.gz: 52530f6e108ed656077a02a78a44dd2cf498e4004b9d27897572f6f77aaec353
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e5b95e2b3f68011a8cdc0fc23b3a5f117f0ce9c711efcfb504230f6a84fb8c6c53a156d6671f97c8ea52cad199de597954badb2e456d33303b80e6e2e2105bec
|
7
|
+
data.tar.gz: d7275ef053d1127a17476244bd7253cb98dab81df865195b7bae7241bcd6106564af13848dfeaf39676acb96e962be73fb7782274ae4ccce2190065234b5fbf9
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,10 @@
|
|
2
2
|
|
3
3
|
## master
|
4
4
|
|
5
|
+
## 1.5.0 (2021-02-20)
|
6
|
+
|
7
|
+
- [PR#50](https://github.com/DmitryTsepelev/graphql-ruby-fragment_cache/pull/50) Add object_cache_key to CacheKeyBuilder ([@bbugh][])
|
8
|
+
|
5
9
|
## 1.4.1 (2021-01-21)
|
6
10
|
|
7
11
|
- [PR#48](https://github.com/DmitryTsepelev/graphql-ruby-fragment_cache/pull/48) Support graphql-ruby 1.12 ([@DmitryTsepelev][])
|
data/README.md
CHANGED
@@ -112,10 +112,10 @@ selections_cache_key = "[#{%w[id name].join(".")}]"
|
|
112
112
|
|
113
113
|
query_cache_key = Digest::SHA1.hexdigest("#{path_cache_key}#{selections_cache_key}")
|
114
114
|
|
115
|
-
cache_key = "#{schema_cache_key}/#{query_cache_key}"
|
115
|
+
cache_key = "#{schema_cache_key}/#{query_cache_key}/#{object_cache_key}"
|
116
116
|
```
|
117
117
|
|
118
|
-
You can override `schema_cache_key`, `query_cache_key` or `
|
118
|
+
You can override `schema_cache_key`, `query_cache_key`, `path_cache_key` or `object_cache_key` by passing parameters to the `cache_fragment` calls:
|
119
119
|
|
120
120
|
```ruby
|
121
121
|
class QueryType < BaseObject
|
@@ -140,6 +140,21 @@ class PostType < BaseObject
|
|
140
140
|
end
|
141
141
|
```
|
142
142
|
|
143
|
+
Overriding `object_cache_key` is helpful in the case where the value that is cached is different than the one used as a key, like a database query that is pre-processed before caching.
|
144
|
+
|
145
|
+
```ruby
|
146
|
+
class QueryType < BaseObject
|
147
|
+
field :post, PostType, null: true do
|
148
|
+
argument :id, ID, required: true
|
149
|
+
end
|
150
|
+
|
151
|
+
def post(id:)
|
152
|
+
query = Post.where("updated_at < ?", Time.now - 1.day)
|
153
|
+
cache_fragment(object_cache_key: query.cache_key) { query.some_process }
|
154
|
+
end
|
155
|
+
end
|
156
|
+
```
|
157
|
+
|
143
158
|
### User-provided cache key
|
144
159
|
|
145
160
|
In most cases you want your cache key to depend on the resolved object (say, `ActiveRecord` model). You can do that by passing an argument to the `#cache_fragment` method in a similar way to Rails views [`#cache` method](https://guides.rubyonrails.org/caching_with_rails.html#fragment-caching):
|
@@ -198,6 +213,7 @@ end
|
|
198
213
|
|
199
214
|
The way cache key part is generated for the passed argument is the following:
|
200
215
|
|
216
|
+
- Use `object_cache_key: "some_cache_key"` if passed to `cache_fragment`
|
201
217
|
- Use `#graphql_cache_key` if implemented.
|
202
218
|
- Use `#cache_key` (or `#cache_key_with_version` for modern Rails) if implemented.
|
203
219
|
- Use `self.to_s` for _primitive_ types (strings, symbols, numbers, booleans).
|
@@ -113,8 +113,13 @@ module GraphQL
|
|
113
113
|
|
114
114
|
def build
|
115
115
|
Digest::SHA1.hexdigest("#{schema_cache_key}/#{query_cache_key}").then do |base_key|
|
116
|
-
|
117
|
-
|
116
|
+
if @options[:object_cache_key]
|
117
|
+
"#{base_key}/#{@options[:object_cache_key]}"
|
118
|
+
elsif object
|
119
|
+
"#{base_key}/#{object_key(object)}"
|
120
|
+
else
|
121
|
+
base_key
|
122
|
+
end
|
118
123
|
end
|
119
124
|
end
|
120
125
|
|
@@ -113,8 +113,13 @@ module GraphQL
|
|
113
113
|
|
114
114
|
def build
|
115
115
|
Digest::SHA1.hexdigest("#{schema_cache_key}/#{query_cache_key}").then do |base_key|
|
116
|
-
|
117
|
-
|
116
|
+
if @options[:object_cache_key]
|
117
|
+
"#{base_key}/#{@options[:object_cache_key]}"
|
118
|
+
elsif object
|
119
|
+
"#{base_key}/#{object_key(object)}"
|
120
|
+
else
|
121
|
+
base_key
|
122
|
+
end
|
118
123
|
end
|
119
124
|
end
|
120
125
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: graphql-fragment_cache
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- DmitryTsepelev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-02-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: graphql
|