graphql-knex-resolver
GraphQL Resolver built with Knex. Can be used to parse GraphQL ASTs into SQL, and as a resolver method standin in a GraphQL schema. Supports whichever databases are supported by Knex.
Install
$ npm install --save graphql-knex-resolver
Usage
Do the stuff you'd normally do, but use the provided resolver method in your GraphQL schema.
1. Initialize the Resolver
const Resolver = // setup knexconst gql = const knex = client: 'pg' connection: // ... const resolver = Resolver
2. Define the Schema
// create the GraphQL schema using the resolverconst userObject = name: 'User' username: type: gqlGraphQLString const userQuery = name: 'UserQuery' user: type: userObject resolve: resolver // <-------- use the resolver method const userSchema = query: userQuery
3. Execute a Query
const findUserByUsername = `{ user (username: $username) { id username }}`return gql
API
getResolver(engine)
Prepare a new GraphQL Query Resolver
.toSQL(query, dialect, args)
Translates a GraphQL query into SQL, irrespective of schema. Uses the root field name as the table.
dialect
is one of (docs):
pg
mysql
sqlite3
oracle
mariasql
Example
Using the findUserByUsername
query above:
Simple Select Statement
const sql = resolver// sql = select "username", from "user" where "name" = 'tjwebb'
Select Where In List Statement
const sql = resolver// sql = select "username" from "user" where "name" = ANY ('{"tjwebb","admin"}')
Table name is inferred to be user
since the root field is user
. The following
query would use the table name "foo":
const findUserByUsername = `{ foo (username: $username) { id username }}`