Giter Club home page Giter Club logo

Comments (4)

matthiasg avatar matthiasg commented on May 12, 2024 1

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.

acarl005 avatar acarl005 commented on May 12, 2024 1

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.

acarl005 avatar acarl005 commented on May 12, 2024

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.

acarl005 avatar acarl005 commented on May 12, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.