GraphQLBundle
GraphQLBundle copied to clipboard
Callbacks enhancement
| Q | A |
|---|---|
| Bug fix? | no |
| New feature? | yes |
| BC breaks? | no |
| Deprecations? | no (at least for now) |
| Tests pass? | yes |
| Documented? | todo |
| Fixed tickets | #708 |
| License | MIT |
This PR is a proposal of how we could move forward for making expression language optional and simplifying config callbacks.
before:
Query:
type: object
config:
fields:
user:
type: User
resolve: '@=query("query")'
User:
type: object
config:
fields:
name:
type: String
description: "the user name"
friends:
type: friendConnection
argsBuilder: "Relay::Connection"
resolve: '@=query("friends", value, args)'
friendsForward:
type: userConnection
argsBuilder: "Relay::ForwardConnection"
resolve: '@=resolver("friends", [value, args])'
friendsBackward:
type: userConnection
argsBuilder: "Relay::BackwardConnection"
resolve: '@=resolver("friends", [value, args])'
friendConnection:
type: relay-connection
config:
nodeType: User
resolveNode: '@=query("node", value)'
edgeFields:
friendshipTime:
type: String
resolve: "Yesterday"
connectionFields:
totalCount:
type: Int
resolve: '@=query("connection")'
userConnection:
type: relay-connection
config:
nodeType: User
resolveNode: '@=query("node", value)'
after:
Query:
type: object
config:
fields:
user:
type: User
resolver: 'Overblog\GraphQLBundle\Tests\Functional\App\Resolver\ConnectionResolver::resolveQuery'
User:
type: object
config:
fields:
name:
type: String
description: "the user name"
friends:
type: friendConnection
argsBuilder: "Relay::Connection"
resolver:
method: 'overblog_graphql.test.resolver.node::friendsResolver'
friendsForward:
type: userConnection
argsBuilder: "Relay::ForwardConnection"
resolver:
id: 'overblog_graphql.test.resolver.node'
method: 'friendsResolver'
friendsBackward:
type: userConnection
argsBuilder: "Relay::BackwardConnection"
resolver: 'overblog_graphql.test.resolver.node::friendsResolver'
friendConnection:
type: relay-connection
config:
nodeType: User
resolveNode: '@=query("node", value)'
edgeFields:
friendshipTime:
type: String
resolver:
expression: "'Yesterday'"
connectionFields:
totalCount:
type: Int
resolver: '@=query("connection")'