Comments (2)
Would to see this feature as well! So I could use java-dataloader
which uses Futures
.
The problem is that we can't just call dataloader.dispatchAndJoin
in property resolver since the batching won't work.
With suspend resolver we could use await()
to solve the problem
from kgraphql.
I've been thinking about implementing a dataloader directly into this project.
Haven't figured exactly how to archive it yet, but I'm thinking something like this?
...
data class Tree(val id: String, val parentId: String?)
...
type<Tree> {
// String - defines the key that will be sent from the [prepare] into [loader]
// List<Tree> - defines the return type that the [loader] is required to return.
// the loader is then required to return it in a map format like Map<String, List<Tree>>
dataProperty<String, List<Tree>>("children") {
// Step 2: This will only be called once.
loader { keys: List<String> ->
keys.map{ id -> id to listOf(Tree("SomeId", id)) }.toMap()
}
// Step 1: This will be called for each node in the list, or only once if it's not a list
prepare { parent: Tree -> parent.id }
// Step 3(Optional): This will be called as many times as the prepare did, but now holds the loaded values
resolve { resolved: List<Tree> -> resolved } // This could maybe process something extra and then return some other type instead of List<Tree>
}
...
}
Please come with any ideas how something like this could look like.
from kgraphql.
Related Issues (20)
- Extension property not working HOT 1
- There is no instruction to help a new user to start the server and the client in this example. How can I run the server and start query? HOT 2
- LocalDate coercion issue HOT 2
- Support for suspendable schema execution HOT 1
- Property resolver with context HOT 8
- Scalar types within variables not working HOT 1
- How would I handle query/mutation authentication? HOT 4
- Print Schema? HOT 1
- Adding Context parameter to resolver causes errors in introspection HOT 3
- Fragments not resolving correctly on same data node
- Nested Fragments fail with property does not exist HOT 2
- LocalDate when passed as query variable HOT 1
- Leaking top level
- Is this the right way with using resolvers on a type? HOT 2
- Support for suspendable unionProperty resolvers
- Implement a DataLoaderDSL for batching
- Caused by: java.lang.NoClassDefFoundError: kotlinx/coroutines/experimental/CommonPool HOT 1
- When overwriting a property, the GraphQL repeats the original property unless ignored
- release 0.3.1 build? HOT 2
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 kgraphql.