graphql-fragment_cache 1.13.1 → 1.14.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9fe4856af12987ff49d92ed9551c46cb64634d48a0112c323436e953ec55990a
4
- data.tar.gz: 0d69c3d4096474724b0ec6b409bb5ecdbbcda5b81f20e5ae035e1ae1c77f18ce
3
+ metadata.gz: 44be1de2fded16cfd021afebe96ce647616225fdbe5de8b140099d2c1bb16f94
4
+ data.tar.gz: 94fb9a82b527c9786d81fed29e821416038c0b20a63f33fe765fc76abf0a9c24
5
5
  SHA512:
6
- metadata.gz: 19f8d2bb9bc21a2bb0b79244e230fbede1b19e60beeadee2d0e7197b4a531d044bc5ca85120300c70a7ef2892e125a2a89b820e86a6aad14c5bd7e4fc572ebbf
7
- data.tar.gz: 136ba3362d1c7fddad10dac6c27f4f3b95b624d0c14dedef3cd28afa63a61330a5d4f95b92a2aeed47b70dfbfb5bf7690cc0f9695561d56a1e34d0fd2ebfd691
6
+ metadata.gz: c10be9f09dcddd09f175452f86071330fe3cb72e9d5875169e20c000372a88ec44e9c9830154e5d2016af177e55852ccf3ae2594e5069e939be4ab0a43676a24
7
+ data.tar.gz: 5ded87b46c9757d28ac95028d16f2e2e71c3ed3d5252285898cc033dff835e61bff6aa7777633b8798eed6fb9dcecacf78d0e0623f1952f74139be8b66a9beee
data/CHANGELOG.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  ## master
4
4
 
5
+ ## 1.14.0 (2022-10-26)
6
+
7
+ - [PR#85](https://github.com/DmitryTsepelev/graphql-ruby-fragment_cache/pull/85) Support passing Symbols to `if:` and `unless:` ([@palkan][])
8
+
9
+ - [PR#85](https://github.com/DmitryTsepelev/graphql-ruby-fragment_cache/pull/85) Fix conditional caching ([@palkan][])
10
+
5
11
  ## 1.13.1 (2022-10-12)
6
12
 
7
13
  - [PR#84](https://github.com/DmitryTsepelev/graphql-ruby-fragment_cache/pull/84) Fix Renew Cache Read Multi Bug ([@KTSCode][])
data/README.md CHANGED
@@ -300,6 +300,12 @@ end
300
300
  field :post, PostType, cache_fragment: {if: -> { current_user.nil? }} do
301
301
  argument :id, ID, required: true
302
302
  end
303
+
304
+ # or
305
+
306
+ field :post, PostType, cache_fragment: {if: :current_user?} do
307
+ argument :id, ID, required: true
308
+ end
303
309
  ```
304
310
 
305
311
  ## Default options
@@ -35,6 +35,12 @@ module GraphQL
35
35
 
36
36
  @context_key = @cache_options.delete(:context_key)
37
37
  @cache_key = @cache_options.delete(:cache_key)
38
+
39
+ @if = @cache_options.delete(:if)
40
+ @unless = @cache_options.delete(:unless)
41
+
42
+ # Make sure we do not modify options, since they're global
43
+ @cache_options.freeze
38
44
  end
39
45
 
40
46
  NOT_RESOLVED = Object.new
@@ -42,11 +48,20 @@ module GraphQL
42
48
  def resolve(object:, arguments:, **_options)
43
49
  resolved_value = NOT_RESOLVED
44
50
 
45
- if @cache_options[:if].is_a?(Proc)
46
- @cache_options[:if] = object.instance_exec(&@cache_options[:if])
51
+ if @if.is_a?(Proc) && !object.instance_exec(&@if)
52
+ return yield(object, arguments)
53
+ end
54
+
55
+ if @if.is_a?(Symbol) && !object.send(@if)
56
+ return yield(object, arguments)
47
57
  end
48
- if @cache_options[:unless].is_a?(Proc)
49
- @cache_options[:unless] = object.instance_exec(&@cache_options[:unless])
58
+
59
+ if @unless.is_a?(Proc) && object.instance_exec(&@unless)
60
+ return yield(object, arguments)
61
+ end
62
+
63
+ if @unless.is_a?(Symbol) && object.send(@unless)
64
+ return yield(object, arguments)
50
65
  end
51
66
 
52
67
  object_for_key = if @context_key
@@ -56,6 +71,7 @@ module GraphQL
56
71
  elsif @cache_key == :value
57
72
  resolved_value = yield(object, arguments)
58
73
  end
74
+
59
75
  cache_fragment_options = @cache_options.merge(object: object_for_key)
60
76
 
61
77
  object.cache_fragment(**cache_fragment_options) do
@@ -2,6 +2,6 @@
2
2
 
3
3
  module GraphQL
4
4
  module FragmentCache
5
- VERSION = "1.13.1"
5
+ VERSION = "1.14.0"
6
6
  end
7
7
  end
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.13.1
4
+ version: 1.14.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-10-12 00:00:00.000000000 Z
11
+ date: 2022-10-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: graphql