Comments (2)
Hi @pgutkowski
Thank you for your reply. I've been thinking of the use cases. One possible concern about Ad1 is that the limit of 6 arguments may prove to be insufficient especially if a developer needs to develop to some specification beyond their control. For example, the Relay Specification defines Connections to have at least 4 arguments: First, Last, Before and After. Add in OrderBy and Filter, and we're maxed out. It may not be possible to squish the arguments into an Input Object, because of compliance issues.
Perhaps you may wish to consider supporting a more open-ended field definition system to be used in the alternative?
Regarding Ad2, if a mutation returns some object type, and that object can be accessed, then whether the root is a mutation might be relevant, especially when optimising DataLoaders. For example:
type Book {
#Some fields
name: String!
}
mutation createBook (input: NewBookInput!) {
newBook {
name # Here it may be useful to check whether it's a mutation or a query.
}
}
I admit that these are rare cases that 95% of developers won't encounter. But it may be good for future-proofing purposes.
from kgraphql.
Hi @Togrias,
Thank you for proposal. Standarization of resolver syntax would be nice, although I'm not sold on all potential benefits.
Ad1. KGraphQL supports up to 6 arguments, I hope that nobody requires more than that in their API, especially considering that argument can be an object. Nonetheless, there is some value in supporting this case.
Ad2. Information whether resolver is query or mutation is available to the person implementing resolver. Programmatic access through Info
object is only syntactic sugar.
Ad3. Thanks to PR by @Bertrand KGraphQL already supports suspending resolvers on 0.3.0-alpha release based on Kotlin 1.3.
Currently resolver signature is introspected and provides infomation for schema compiler about expected arguments. With this solution, schema has full type information and resolvers don't bother with type casting.
Introducing syntax proposed by you we would have to change DSL for query/mutation declaration, do you have any ideas?
from kgraphql.
Related Issues (20)
- Extension property not working HOT 1
- Support for suspendable property resolvers HOT 2
- 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.