batch-loader 1.2.2 → 1.3.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
  SHA1:
3
- metadata.gz: 0c89e0468fac3840ce82631d0a0f9ac61eeda081
4
- data.tar.gz: ec6c5021e04a5bc067356305659325431caa2753
3
+ metadata.gz: a7165f52041d179cfe8de386a0d761d35d1cbca2
4
+ data.tar.gz: 0d4f594bea1a9d78cb3b94f41c90cf14860dedee
5
5
  SHA512:
6
- metadata.gz: 6551811eace7cb180cdea08c28b77695d8c243af3e6675e9da8d172645cab35ba51803f036359c4ecd8a6cc65a1ec2b95e2b1824f829c0454da2c0570748e396
7
- data.tar.gz: 78c0481961a045060a64c155ddb196f125da805944014ad59052464fb7b3a884e41cd6462ab5ceb186931cbcbd1e210f61d963007e4af8f1124809a2ec698e62
6
+ metadata.gz: 157d5e17609ef8dc6df9ee49755441083d5d49f5b482e14087d8fba3d004ecb2e1a721ae28eb77a5b23be399c99383cf8cc29cdc0e0efe7d88d051bd44c80412
7
+ data.tar.gz: a2ad4e96c32219022efa84d7d27bfb90244ce8e8c54072370d5e667031bbc2bf37faee159f645d632b72d440b45a6c2e0b5074c216572ff7b3bf9cc334362cc3
@@ -8,10 +8,14 @@ one of the following labels: `Added`, `Changed`, `Deprecated`,
8
8
  to manage the versions of this gem so
9
9
  that you can set version constraints properly.
10
10
 
11
- #### [Unreleased](https://github.com/exAspArk/batch-loader/compare/v1.2.2...HEAD)
11
+ #### [Unreleased](https://github.com/exAspArk/batch-loader/compare/v1.3.0...HEAD)
12
12
 
13
13
  * WIP
14
14
 
15
+ #### [v1.3.0](https://github.com/exAspArk/batch-loader/compare/v1.2.2...v1.3.0)
16
+
17
+ * `Added`: `BatchLoader::GraphQL` to make it work with `graphql` gem version `>= 1.8.7`. [#30](https://github.com/exAspArk/batch-loader/issues/30)
18
+
15
19
  #### [v1.2.2](https://github.com/exAspArk/batch-loader/compare/v1.2.1...v1.2.2)
16
20
 
17
21
  * `Fixed`: Identify item by `key` object instead of `key` string representation. [#27](https://github.com/exAspArk/batch-loader/pull/27)
data/README.md CHANGED
@@ -258,13 +258,13 @@ query = "
258
258
  Schema.execute(query)
259
259
  ```
260
260
 
261
- To avoid this problem, all we have to do is to change the resolver to return `BatchLoader`:
261
+ To avoid this problem, all we have to do is to change the resolver to return `BatchLoader::GraphQL` ([#32](https://github.com/exAspArk/batch-loader/pull/32) explains why not just `BatchLoader`):
262
262
 
263
263
  ```ruby
264
264
  PostType = GraphQL::ObjectType.define do
265
265
  name "Post"
266
266
  field :user, !UserType, resolve: ->(post, args, ctx) do
267
- BatchLoader.for(post.user_id).batch do |user_ids, loader|
267
+ BatchLoader::GraphQL.for(post.user_id).batch do |user_ids, loader|
268
268
  User.where(id: user_ids).each { |user| loader.call(user.id, user) }
269
269
  end
270
270
  end
@@ -314,7 +314,7 @@ def lazy_association(post)
314
314
 
315
315
  BatchLoader.for(id).batch(key: key) do |ids, loader, args|
316
316
  model = Object.const_get(args[:key])
317
- model.where(id: ids).each { |record| record.call(record.id, record) }
317
+ model.where(id: ids).each { |record| loader.call(record.id, record) }
318
318
  end
319
319
  end
320
320
  post1 = Post.save(association_id: 1, association_type: 'Tag')
@@ -2,18 +2,9 @@
2
2
 
3
3
  class BatchLoader
4
4
  class GraphQL
5
- class Wrapper
6
- def initialize(batch_loader)
7
- @batch_loader = batch_loader
8
- end
9
-
10
- def sync
11
- @batch_loader.__sync
12
- end
13
- end
14
-
15
5
  def self.use(schema_definition)
16
- schema_definition.lazy_resolve(BatchLoader::GraphQL::Wrapper, :sync)
6
+ schema_definition.lazy_resolve(BatchLoader::GraphQL, :sync)
7
+ # for graphql gem versions <= 1.8.6 which work with BatchLoader instead of BatchLoader::GraphQL
17
8
  schema_definition.instrument(:field, self)
18
9
  end
19
10
 
@@ -21,10 +12,35 @@ class BatchLoader
21
12
  old_resolve_proc = field.resolve_proc
22
13
  new_resolve_proc = ->(object, arguments, context) do
23
14
  result = old_resolve_proc.call(object, arguments, context)
24
- result.respond_to?(:__sync) ? BatchLoader::GraphQL::Wrapper.new(result) : result
15
+ result.respond_to?(:__sync) ? BatchLoader::GraphQL.wrap(result) : result
25
16
  end
26
17
 
27
18
  field.redefine { resolve(new_resolve_proc) }
28
19
  end
20
+
21
+ def self.wrap(batch_loader)
22
+ BatchLoader::GraphQL.new.tap do |graphql|
23
+ graphql.batch_loader = batch_loader
24
+ end
25
+ end
26
+
27
+ def self.for(item)
28
+ new(item)
29
+ end
30
+
31
+ attr_writer :batch_loader
32
+
33
+ def initialize(item = nil)
34
+ @batch_loader = BatchLoader.for(item)
35
+ end
36
+
37
+ def batch(*args, &block)
38
+ @batch_loader.batch(*args, &block)
39
+ self
40
+ end
41
+
42
+ def sync
43
+ @batch_loader.__sync
44
+ end
29
45
  end
30
46
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class BatchLoader
4
- VERSION = "1.2.2"
4
+ VERSION = "1.3.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: batch-loader
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.2
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - exAspArk
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-12-03 00:00:00.000000000 Z
11
+ date: 2019-02-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler