GraphQL is cool. Graph Databases are cool. But surprisingly, they aren't so cool to work with together.
While working on a startup idea I wanted to do just that- and ended up learning a lot about the internals of the GraphQL query resolution process.
The goal of graphql-arangodb is to translate whole GraphQL queries from the client into ArangoDB's AQL query language, so a single query from a client is translated into as few database queries as possible.
Another more subtle goal is to avoid coupling an external service API with database implementation details. I don't think generating GraphQL APIs for databases is really scalable. Our job as service designers is to bridge the gap from the structural needs of the data persistence layer with the business abstractions of the API. I wanted my library to respect and enable that.
It works pretty well! By annotating your GraphQL schema, you can assist the library in effectively translating between your API's models and the underlying database structure. It ships with some convenience decorators but you can also break out the big guns and write raw queries, interpolating in data from the GraphQL context.
I'm not actively maintaining it anymore, but it does do the job. If this seems up your alley, maybe you could take it over (or fork it)!
While working on a startup idea I wanted to do just that- and ended up learning a lot about the internals of the GraphQL query resolution process.
The goal of graphql-arangodb is to translate whole GraphQL queries from the client into ArangoDB's AQL query language, so a single query from a client is translated into as few database queries as possible.
Another more subtle goal is to avoid coupling an external service API with database implementation details. I don't think generating GraphQL APIs for databases is really scalable. Our job as service designers is to bridge the gap from the structural needs of the data persistence layer with the business abstractions of the API. I wanted my library to respect and enable that.
It works pretty well! By annotating your GraphQL schema, you can assist the library in effectively translating between your API's models and the underlying database structure. It ships with some convenience decorators but you can also break out the big guns and write raw queries, interpolating in data from the GraphQL context.
I'm not actively maintaining it anymore, but it does do the job. If this seems up your alley, maybe you could take it over (or fork it)!