3 ms·
Typically libraries use a Dataloader + ORM to implement this which gets you pretty far, outside of that some libs like Strawberry with automatically optimize yo
by hansonkd 2y ago
Typically libraries use a Dataloader + ORM to implement this which gets you pretty far, outside of that some libs like Strawberry with automatically optimize your queries for you if you return Django ORM Querysets.
Any query you were going to build and serve with Rest can be made with these two methods or even a raw dataloader and manual SQL string.
- discreteevent 2y agoThe inventors of GraphQL did not intend it to be mapped directly to a database. "That would be one way to implement the system in a DB-centric way. However we believe that intermediate application code is pretty critical to any GraphQL implementation." [1] "GraphQL is a client-server dance that needs server-side capabilities, not just CRUD semantics." [2] [1] https://news.ycombinator.com/item?id=9879870 https://news.ycombinator.com/item?id=9879870 [2] https://news.ycombinator.com/item?id=14351800 https://news.ycombinator.com/item?id=14351800
- hansonkd 2y agoThe Language Libs like Strawberry implement what he is describing by intermediate application code. It doesn't map directly to a database. GQL implementations don't map to the database but to application code.
- chuckadams 2y agoSpecifically, GQL implementations always map to a `resolve(source, args, context, info)` function (the names can be anything, the types are what matter). In that sense, you also get a standard server interface similar to wsgi/psgi/rack, but much more fine-grained (there can be a resolver for every field in the query).