Comments (16)
The typeMapper should probably receive the whole attribute instead of just the type, to get access to the Model's name and the attribute's name.
from graphql-sequelize.
Would not make it a typeMapper anymore though ;)
But we'll probably have to remove ENUM from the typeMapper and do a special case in attributeFields.
from graphql-sequelize.
Does it matter what the name is for the GraphQLEnumType
? If we just need to enforce unique names we can generate unique random strings for the name.
from graphql-sequelize.
It will make the returned schema valid again since name's are just required to be unique, but introspection of your schema saying Object x has a field of type "Di57gpl" (random string) isn't very nice.
from graphql-sequelize.
Well, looking nice in introspection is a secondary concern to functionality. So I think what it should do is generate a random string for the schema name, note that it does so in the docs, and if you really need to have specific declared names you can exclude the ENUM
and define it yourself.
from graphql-sequelize.
In order to maintain the function of typeMapper only being a typeMapper, we could check to see if the returned type from typeMapper is a ENUM inside of attributeFields and add the name after the fact using key and model name. So something like [modelname][Key]EnumType - (ex: userStatusEnumType) ?
from graphql-sequelize.
The unique name checking takes place inside the GraphQLObjectType constructor so that wouldnt fix the error.
from graphql-sequelize.
The unique name error is thrown from the schema object, not from the GraphQLEnumType/Or Object Types. GraphQL doesn't know its non-unique until you try to build the schema.
from graphql-sequelize.
Error: Schema must contain unique named types but contains multiple types named "undefined".
at invariant ([...]/node_modules/graphql/jsutils/invariant.js:20:11)
at typeMapReducer ([...]/node_modules/graphql/type/schema.js:138:41)
from graphql-sequelize.
Ahh, yes I see. Then i'd say run like that. It makes more sense to implement the name logic inside the attributeFields function.
from graphql-sequelize.
@aweary + @mickhansen thoughts on this solution? Requires an additional type check inside of attributeFields which is the only negative.
from graphql-sequelize.
👍
from graphql-sequelize.
@brad-decker Sounds like a good solution for now.
from graphql-sequelize.
@mickhansen i threw the fix for this into my open Pull request. added tests for coverage
from graphql-sequelize.
Published in v0.9.0
from graphql-sequelize.
@mickhansen this should be reopened as the fix does not cover nesting via DataTypes.ARRAY(DataTypes.ENUM(ENUM_ARRAY))
from graphql-sequelize.
Related Issues (20)
- Combining multiple associations HOT 5
- Problem integrating connection types and dataloader for paginated (cursor) queries HOT 1
- When using `JSONType` I get `Error: One of the provided types for building the Schema is missing a name.` HOT 2
- Can we use `attributeFields` with graphql SDL? HOT 2
- How to express two way relationship HOT 2
- Change the default name of Date scalar HOT 3
- Relay Connections with Dataloader HOT 4
- Is this working with GraphQL 15? HOT 2
- sequelize model comment => graphql field description HOT 4
- CITEXT throws an issue in the latest version HOT 7
- Unable to convert geometry to graphql type HOT 1
- Are filtering operators supported? HOT 2
- OrderBy can conflicts with Attributes HOT 1
- Passing `where:` in-place, without query variable HOT 2
- Fix order type in defaultListArgs HOT 6
- Compatibility with GraphQL v17 HOT 1
- Peer dependency support for graphql 16 HOT 2
- OrderBy doesn't pass multiple to the query HOT 1
- Changing relay edges to be nonNull causes a node error HOT 3
- Use graphql-sequelize with dataloader-sequelize 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 graphql-sequelize.