Open terion-name opened 6 years ago
You are correct, root types are merged. However, if you specify a namespace, its root types are wrapped in a field on the newly generated root type first - thus, you have two query types:
# newly generated query type
type Query {
demo: Query # referencing the original Query type of demo
}
# the original Query type of demo
type Query {
// original fields of demo's Query type
}
This generates the error about duplicate types you got. You should use typePrefix
in conjunction with namespaces to avoid these kind of conflicts. I could also see an extension to graphql-weaver that allows to specify the names of the newly generated root types, so you could disambiguate the two types - but this would fail with the next endpoint as it probably also has a Query
type. Or you could just rename the Query
type in the referenced schema if it is controlled by you.
If I add typePrefix, schema becomes strange:
Query → demo → Demo__Query → ... stuff
While queries perform correctly, I don't understand, why this conflict in root types appears (especially if to consider that I try it with one endpoint)
I don't know what you mean by Demo__Query
. I reproduced your setup in apollo launchpad. It works as intended, and there is no Demo__Query
type if this is what you meant.
You should use typePrefix in conjunction with namespaces to avoid these kind of conflicts
understood, thank you
I don't know what you mean by Demo__Query
This:
But yes, queries work ok:
And this looks strange
Ah, I only just realized you used Demo__
as typePrefix. I wondered where these two underscores come from ;)
What exactly does look strange to you, then? The Query
type is the root type and contains a field for the namespace demo
of type Demo__Query
, which is just the renamed type Query
from your endpoint.
In case you are referring to _extIntrospection
- this is a field required for the @link
and @join
features. We could also add an option to exclude this from the output if it bothers you.
Root types (query, mutation, etc) should be merged, yes? But I am trying to do the following: combining apollo server with schema stiching and weaver like this (a demo):
And I get:
Even without apollo's tooling, like this:
I get the same.
If I add typePrefix, schema becomes strange:
While queries perform correctly, I don't understand, why this conflict in root types appears (especially if to consider that I try it with one endpoint)