graphql-fragment_cache 1.16.0 → 1.17.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/CHANGELOG.md +4 -0
- data/README.md +3 -7
- data/lib/.rbnext/2.3/graphql/fragment_cache/cache_key_builder.rb +25 -13
- data/lib/.rbnext/2.7/graphql/fragment_cache/cache_key_builder.rb +25 -13
- data/lib/graphql/fragment_cache/cache_key_builder.rb +25 -13
- data/lib/graphql/fragment_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: e2c544bc2742643748c5e36c59b3414def73c22e6f7c4b5080504751ea564ecd
|
4
|
+
data.tar.gz: b61980525863502ea4f30eeb96fee11dbc11a906ab98b863ed0ece7f9d97d1e9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aac16bb6d2541e573796043ebf2da2ffa171918730ad95f4613db1f6b20cb1156a4a1cb3d70b7e0c39be57a6d56d2cfd3a27d95470c0c316f8f95a756bf83377
|
7
|
+
data.tar.gz: 85349b218d754a716db3aa8165e8de64a92b48c22e4b4b1615e612d041000701a090c643fa6b6e68326bb51a3688df2eb71f84604a1bfd19034eb01201453b26
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,10 @@
|
|
2
2
|
|
3
3
|
## master
|
4
4
|
|
5
|
+
## 1.17.0 (2022-11-09)
|
6
|
+
|
7
|
+
- [PR#92](https://github.com/DmitryTsepelev/graphql-ruby-fragment_cache/pull/92) Make cache keys human-readable ([@jeromedalbert][])
|
8
|
+
|
5
9
|
## 1.16.0 (2022-11-06)
|
6
10
|
|
7
11
|
- [PR#42](https://github.com/DmitryTsepelev/graphql-ruby-fragment_cache/pull/42) Raise helpful errors when write or write_multi fails ([@DmitryTsepelev][])
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# GraphQL::FragmentCache  
|
2
2
|
|
3
3
|
`GraphQL::FragmentCache` powers up [graphql-ruby](https://graphql-ruby.org) with the ability to cache response _fragments_: you can mark any field as cached and it will never be resolved again (at least, while cache is valid). For instance, the following code caches `title` for each post:
|
4
4
|
|
@@ -9,12 +9,6 @@ class PostType < BaseObject
|
|
9
9
|
end
|
10
10
|
```
|
11
11
|
|
12
|
-
<p align="center">
|
13
|
-
<a href="https://evilmartians.com/?utm_source=graphql-ruby-fragment_cache">
|
14
|
-
<img src="https://evilmartians.com/badges/sponsored-by-evil-martians.svg" alt="Sponsored by Evil Martians" width="236" height="54">
|
15
|
-
</a>
|
16
|
-
</p>
|
17
|
-
|
18
12
|
## Getting started
|
19
13
|
|
20
14
|
Add the gem to your Gemfile `gem 'graphql-fragment_cache'` and add the plugin to your schema class:
|
@@ -489,6 +483,8 @@ end
|
|
489
483
|
|
490
484
|
Based on the original [gist](https://gist.github.com/palkan/faad9f6ff1db16fcdb1c071ec50e4190) by [@palkan](https://github.com/palkan) and [@ssnickolay](https://github.com/ssnickolay).
|
491
485
|
|
486
|
+
Initially sponsored by [Evil Martians](http://evilmartians.com).
|
487
|
+
|
492
488
|
## Contributing
|
493
489
|
|
494
490
|
Bug reports and pull requests are welcome on GitHub at [https://github.com/DmitryTsepelev/graphql-ruby-fragment_cache](https://github.com/DmitryTsepelev/graphql-ruby-fragment_cache).
|
@@ -137,11 +137,17 @@ module GraphQL
|
|
137
137
|
end
|
138
138
|
|
139
139
|
def build
|
140
|
-
[
|
140
|
+
key_parts = [
|
141
141
|
GraphQL::FragmentCache.namespace,
|
142
|
+
simple_path_cache_key,
|
142
143
|
implicit_cache_key,
|
143
144
|
object_cache_key
|
144
|
-
]
|
145
|
+
]
|
146
|
+
|
147
|
+
key_parts
|
148
|
+
.compact
|
149
|
+
.map { |key_part| key_part.tr("/", "-") }
|
150
|
+
.join("/")
|
145
151
|
end
|
146
152
|
|
147
153
|
private
|
@@ -170,22 +176,28 @@ module GraphQL
|
|
170
176
|
current_root.selections.to_selections_key
|
171
177
|
end
|
172
178
|
|
179
|
+
def simple_path_cache_key
|
180
|
+
path_cache_key.split("(").first
|
181
|
+
end
|
182
|
+
|
173
183
|
def path_cache_key
|
174
|
-
@
|
175
|
-
|
184
|
+
@path_cache_key ||= begin
|
185
|
+
@options.fetch(:path_cache_key) do
|
186
|
+
lookahead = query.lookahead
|
176
187
|
|
177
|
-
|
178
|
-
|
179
|
-
|
188
|
+
path.map { |field_name|
|
189
|
+
# Handle cached fields inside collections:
|
190
|
+
next field_name if field_name.is_a?(Integer)
|
180
191
|
|
181
|
-
|
182
|
-
|
192
|
+
lookahead = lookahead.selection_with_alias(field_name)
|
193
|
+
raise "Failed to look ahead the field: #{field_name}" if lookahead.is_a?(::GraphQL::Execution::Lookahead::NullLookahead)
|
183
194
|
|
184
|
-
|
195
|
+
next lookahead.field.name if lookahead.arguments.empty?
|
185
196
|
|
186
|
-
|
187
|
-
|
188
|
-
|
197
|
+
args = lookahead.arguments.map { |_1, _2| "#{_1}:#{traverse_argument(_2)}" }.sort.join(",")
|
198
|
+
"#{lookahead.field.name}(#{args})"
|
199
|
+
}.join("/")
|
200
|
+
end
|
189
201
|
end
|
190
202
|
end
|
191
203
|
|
@@ -137,11 +137,17 @@ module GraphQL
|
|
137
137
|
end
|
138
138
|
|
139
139
|
def build
|
140
|
-
[
|
140
|
+
key_parts = [
|
141
141
|
GraphQL::FragmentCache.namespace,
|
142
|
+
simple_path_cache_key,
|
142
143
|
implicit_cache_key,
|
143
144
|
object_cache_key
|
144
|
-
]
|
145
|
+
]
|
146
|
+
|
147
|
+
key_parts
|
148
|
+
.compact
|
149
|
+
.map { |key_part| key_part.tr("/", "-") }
|
150
|
+
.join("/")
|
145
151
|
end
|
146
152
|
|
147
153
|
private
|
@@ -170,22 +176,28 @@ module GraphQL
|
|
170
176
|
current_root.selections.to_selections_key
|
171
177
|
end
|
172
178
|
|
179
|
+
def simple_path_cache_key
|
180
|
+
path_cache_key.split("(").first
|
181
|
+
end
|
182
|
+
|
173
183
|
def path_cache_key
|
174
|
-
@
|
175
|
-
|
184
|
+
@path_cache_key ||= begin
|
185
|
+
@options.fetch(:path_cache_key) do
|
186
|
+
lookahead = query.lookahead
|
176
187
|
|
177
|
-
|
178
|
-
|
179
|
-
|
188
|
+
path.map { |field_name|
|
189
|
+
# Handle cached fields inside collections:
|
190
|
+
next field_name if field_name.is_a?(Integer)
|
180
191
|
|
181
|
-
|
182
|
-
|
192
|
+
lookahead = lookahead.selection_with_alias(field_name)
|
193
|
+
raise "Failed to look ahead the field: #{field_name}" if lookahead.is_a?(::GraphQL::Execution::Lookahead::NullLookahead)
|
183
194
|
|
184
|
-
|
195
|
+
next lookahead.field.name if lookahead.arguments.empty?
|
185
196
|
|
186
|
-
|
187
|
-
|
188
|
-
|
197
|
+
args = lookahead.arguments.map { |_1, _2| "#{_1}:#{traverse_argument(_2)}" }.sort.join(",")
|
198
|
+
"#{lookahead.field.name}(#{args})"
|
199
|
+
}.join("/")
|
200
|
+
end
|
189
201
|
end
|
190
202
|
end
|
191
203
|
|
@@ -137,11 +137,17 @@ module GraphQL
|
|
137
137
|
end
|
138
138
|
|
139
139
|
def build
|
140
|
-
[
|
140
|
+
key_parts = [
|
141
141
|
GraphQL::FragmentCache.namespace,
|
142
|
+
simple_path_cache_key,
|
142
143
|
implicit_cache_key,
|
143
144
|
object_cache_key
|
144
|
-
]
|
145
|
+
]
|
146
|
+
|
147
|
+
key_parts
|
148
|
+
.compact
|
149
|
+
.map { |key_part| key_part.tr("/", "-") }
|
150
|
+
.join("/")
|
145
151
|
end
|
146
152
|
|
147
153
|
private
|
@@ -170,22 +176,28 @@ module GraphQL
|
|
170
176
|
current_root.selections.to_selections_key
|
171
177
|
end
|
172
178
|
|
179
|
+
def simple_path_cache_key
|
180
|
+
path_cache_key.split("(").first
|
181
|
+
end
|
182
|
+
|
173
183
|
def path_cache_key
|
174
|
-
@
|
175
|
-
|
184
|
+
@path_cache_key ||= begin
|
185
|
+
@options.fetch(:path_cache_key) do
|
186
|
+
lookahead = query.lookahead
|
176
187
|
|
177
|
-
|
178
|
-
|
179
|
-
|
188
|
+
path.map { |field_name|
|
189
|
+
# Handle cached fields inside collections:
|
190
|
+
next field_name if field_name.is_a?(Integer)
|
180
191
|
|
181
|
-
|
182
|
-
|
192
|
+
lookahead = lookahead.selection_with_alias(field_name)
|
193
|
+
raise "Failed to look ahead the field: #{field_name}" if lookahead.is_a?(::GraphQL::Execution::Lookahead::NullLookahead)
|
183
194
|
|
184
|
-
|
195
|
+
next lookahead.field.name if lookahead.arguments.empty?
|
185
196
|
|
186
|
-
|
187
|
-
|
188
|
-
|
197
|
+
args = lookahead.arguments.map { "#{_1}:#{traverse_argument(_2)}" }.sort.join(",")
|
198
|
+
"#{lookahead.field.name}(#{args})"
|
199
|
+
}.join("/")
|
200
|
+
end
|
189
201
|
end
|
190
202
|
end
|
191
203
|
|
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.17.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- DmitryTsepelev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-11-
|
11
|
+
date: 2022-11-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: graphql
|