fix(): support multiple GraphQLModule in an app #1432
Closed
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.
PR Checklist
Please check if your PR fulfills the following requirements:
PR Type
What kind of change does this PR introduce?
What is the current behavior?
Currently, when wanting to use multiple GraphQLModules (different schemas for separate endpoints) in combination with the code-first approach, there will be an error such as
Error: Schema must contain uniquely named types but contains multiple types named "User".
.Issue Number: #721
What is the new behavior?
Now it works.
During
GraphQLModule
initialization, basically all storages are cleared and the codebase is re-scanned from scratch including re-evaluation of annotations. Only theTypeDefinitionsStorage
is an exception, which keeps references to outdated objects using the mapsInputTypeDefinitionsLinks
andoutputTypeDefinitionsLinks
.With the new behavior, these storages are cleared as well in the
GraphQLSchemaFactory
duringGraphQLModule
initialization.Does this PR introduce a breaking change?
Other information
I opted to keep code changes minimal while fixing the bug. This means I mixed static method calls with intance method calls in the
GraphQLSchemaFactory
and extended an existing test to mimic the problem. If you want me to add an additional test or structure the code differently, just let me know.Same goes for a Changelog or docs, so far I haven't touched any.
Closes #721