Comments (3)
Hey, @hidde-jan, @Amnesthesia . CountLoader
is just something like other loaders. The most important thing you have to do is to implement perform method . In the user-defined perform
method, you have to create some key-value
s by input keys using fulfill
like this example. Here is the general usage
- define your loader class and,
- implement
initialize
, usually with some arguments you need and, - implement
perform
. In this method you have to get all results by keys, and create yourkey-value
s
This example is far from ActiveRecord or any ORM
class MyLoader < GraphQL::Batch::Loader
def initialize(arguments)
@arguments = arguments
end
# Usually you don't have to implement your method unless some type casts are different
def load(key)
super(key)
end
# As it is refered from "You can also batch other stuff, not only load records from a DB"
# In this example result is an object with attr `key`. Possiblly it is a redis obejct, json or rpc result defined in get_results
def perform(keys)
results = get_results(keys)
results.each { |result| fulfill(result.key, result)}
keys.each { |key| fulfill(key, nil) unless fulfilled?(key) }
end
private
def get_results(keys)
# your implementation, remember to return an array
end
end
from graphql-batch.
There's an example of a CountLoader and some other loaders here: https://github.com/jamesbrooks/graphql-batch-loaders
from graphql-batch.
I've been using the Record loader a lot, but run into a couple of problems that I haven't been able to figure out; I would love some more documentation on things like:
- Is it possible to maintain order after the promises are fulfilled?
- Can we batch HABTMs?
from graphql-batch.
Related Issues (20)
- Release new Gem version to fix class definition syntax? HOT 2
- through association loader order issue HOT 1
- How do you paginate responses when using AssociationLoader? HOT 7
- [graphql v1.10.0.pre2] undefined method `target`
- clarify GraphQL::Batch.batch documentation HOT 2
- [proposal] Integrate Rubocop
- [question] Using inverse ActiveRecord associations to avoid N+1 queries? HOT 3
- Add a changelog HOT 1
- Ruby 2.7 keyword arguments warning HOT 3
- Loaders that are nested / based on another HOT 2
- How to Implement Pagination with AssociationLoader using Connections? HOT 2
- Thoughts on hashing ActiveRecord relations?
- ActiveRecord::Associations::Preloader is private API
- Loader for has_many_attached HOT 1
- Nested loader doesn't work HOT 2
- fulfilled? always returns false even if it's fulfilled with promise HOT 1
- Love HOT 1
- N+1 problem happen with using Time.current in where sentence(maybe) HOT 2
- If a loader's perform method raises an exception after all promises have been fulfilled, it's silently dropped
- Deprecation in GraphQL. HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from graphql-batch.