Comments (1)
This is the case where multiple nodes should share a common interface and the schema maintainer would like to create an edge to that interface rather than the concrete nodes.
An alternative implementation would be to do this as union types rather than traits or interfaces.
E.g.,
Foo as Node {
} & OutboundEdges {
things: Edge<Bar.fooId | Baz.fooId | Woo.fooId>
}
One problem is how to model that underlying query. If all three types are completely disjoint, what filters do we give the user to use?
Even if they are not disjoint, how do we generate the query type?
Do we inspect each type, collect together common properties, expose those as where
methods?
And for the SQL storage -- do we only select fields that are compatible with a union
operator?
And once we get the return we re-query based on ID to fully hydrate each node?
^-- all said problems exist in the trait world too except that we don't have to walk types during code generation.
An option in the trait world is to return only the data that fulfills the trait.. This will create hella problems for caching and row level privacy, however.
from vlcn-orm.
Related Issues (20)
- Enable more complex types in fields
- schema watch command
- i64 support in browser & node
- `wantData` / `withNode` / `select`/ ...
- read after optimistic write & optimistic reactivity
- more complex demo app
- package and publish vscode plugin
- aphrodite schema language server
- remove files that should no longer be generated
- Abstract and simplify edge definition? HOT 1
- Index migrations
- How much can we push down into Rust?
- sqlite browser debug tool
- Further platform support
- query cache HOT 2
- GraphQL Extension
- run integration tests in browser environments too
- mutator improvements?
- add test package that logs perf data
- reactive queries and field edges
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 vlcn-orm.