Comments (4)
A view should only be necessary when there is a need to sort those. In all other cases simply running two queries and merging the results into the same list is quite sufficient. A view might be more idiomatic with respect to SQL but that would also require a potentially high number of columns in the view since the types might not have overlapping fields. One of our cases for example, is a 'children field which is resolved using a shared field parent
which is an id linking an item to a parent. The id is shared, the rest is not.
If this is not required by other users I think any work done here should be as minimal as possible though just to get the idea out and validated.
from join-monster.
Yeah, creating views that union very disjoint tables is ugly.
For now the best way to handle it is a separate, hand-written query in your resolver.
from join-monster.
Unfortunately there is no support for union types right now. We avoided this feature since there really is no obvious way to automatically union two types with different tables. However, the need has arisen.
What we envision is creating a SQL view which unions the two tables, and telling the GraphQL union type to query that view.
const X = new GraphQLUnionType({
types: [ Y1, Y2 ],
resolveType: fn() {...},
sqlView: 'Y'
})
CREATE VIEW Y AS
SELECT column_name(s) FROM Y1
UNION ALL
SELECT column_name(s) FROM Y2;
Would this work for your use case? Could you elaborate on the use case a bit more? We're curious why you're using GraphQL union types.
from join-monster.
Union and Interface types are now possible. It's still not easy to do with incongruous tables, but it's possible. Certainly open to feedback. Feel free to open new issue with suggestions. docs
from join-monster.
Related Issues (20)
- Typescript type errors HOT 1
- Link to demo does not work HOT 5
- tsd failing locally HOT 2
- Fails if I extend GraphQLObjectType HOT 1
- Must call joinMonster in a resolver on a field where the type is decorated with \"sqlTable\" HOT 9
- Cannot read properties of undefined (reading 'sqlTable') HOT 2
- Failing type defs
- Issue with GlobalIDs not transforming back to "native" uuid4 IDs
- bug in joinMonster.getNode(): def.args not iterable HOT 4
- Querying the same relation multiple times as aliases with different args results in wrong data HOT 5
- Remove requirement for uniqueKey to be defined
- Pagination with dynamic sorting does not support null values. HOT 1
- joinMonster creating invalid MySQL sql HOT 1
- Unsupport many-to-many relation on graphql v15.8 and join-monster v3.1.1 using postgres? HOT 1
- Batching JoinMonster calls
- The HTTP server example code is broken due to deprecation of kao-graphql HOT 1
- join-monster fails to work in a react native deployment HOT 1
- Typescript type error for GraphQLFieldExtensions HOT 1
- Some disjoint fields of the same union type are discarded HOT 7
- Test flake on database startup
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 join-monster.