Mercurius PostGraphile
July 15, 2021 ยท View on GitHub
A Fastify plugin for integrating PostGraphile schemas with Mercurius
Contents
Usage
npm i @autotelic/mercurius-postgraphile
const mercuriusPostGraphile = require('@autotelic/mercurius-postgraphile')
const { Pool } = require('pg')
const connectionString = process.env.DATABASE_URL
const pgPool = new Pool({ connectionString })
module.exports = async function (fastify, options) {
fastify.register(mercuriusPostGraphile, {
connectionString,
pgPool
})
}
API
Options
| Name | Status | Type | Default | Description |
|---|---|---|---|---|
connectionString | Required | String | - | A postgreSQL database connection string, i.e. postgres://postgres:password@0.0.0.0:5432/postgres?sslmode=disable. |
pgPool | Required | Object | - | A client or pool instance that will be passed to the pg library and used to connect to a PostgreSQL backend. |
instanceName | Optional | String | public | A string which specifies the PostgreSQL schema that PostGraphile will use to create a GraphQL schema. |
localStitchOpts | Optional | Object | {} | An object containing local subschema config options. |
postGraphileStitchOpts | Optional | Object | {} | An object containing PostGraphile subschema config options. stitchOpts for both the local and PostGraphile schemas implement the SubschemaConfig interface. Documention can be found here |
postGraphileContextOpts | Optional | Object/Function | {} | An object or callback function containing withPostGraphileContext options, outlined here |
postGraphileSchemaOpts | Optional | Object | {} | An object containing createPostGraphileSchema options, outlined here |
Run the Example
Install Dependencies and Run a Local Postgres Container
npm i
docker-compose up -d
Run the server
npm run example
Make Requests to the Server
http :3000/graphql
http POST :3000/graphql
Explore Graphiql
http://localhost:3000/graphiql
The user query from PostGraphile and the localUser query from Mercurius are used to merge the User type. Check out the example to explore the stitch options implemented in merging the local and PostGraphile schemas.
query {
user(id: 1) {
username
verified
}
localUser(id: 1) {
username
verified
}
}