Expose selected fields in resolver context #5
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This fixes graph-gophers#17. Basically, it exposes the selected field tree in the context for the resolvers and downstream usage.
There are two PRs open in upstream that fix this issue but I think the solution in this PR is better and we can merge it in our branch to make use of it quickly. The PRs in upstream have been open for a while.
Does this break the existing api?
No
What if I do not want the selection tree? Does it have performance impact?
There should be very negligible performance impact. The selection tree is lazily added; meaning, it is added to the context only when you request it. The lazy evaluation happens via a closure function.
How can I use it?
In your resolver, you can do
selected.GetFieldsFromContext(ctx)
which returns[]selected.SelectedField, error
. For an example, take a look atexample/social/social.go
Test Notes
./example/social/server/server.go
http://localhost:9011/
and run this query. Verify that some basic stuff about selection tree is logged in the consoleTODO