@autotelic/fastify-postgraphile

PostGraphile plugin for fastify

Usage no npm install needed!

<script type="module">
  import autotelicFastifyPostgraphile from 'https://cdn.skypack.dev/@autotelic/fastify-postgraphile';
</script>

README

fastify-postgraphile

Fastify plugin for PostGraphile.

Takes inspiration from the following resources:

Usage

npm install @autotelic/fastify-postgraphile
const fastifyPostGraphile = require('@autotelic/fastify-postgraphile')
const { DATABASE_URL } = process.env

module.exports = function (fastify, options, next) {
    fastify.register(fastifyPostGraphile, { database: DATABASE_URL })

    fastify.get('/', (req, reply) => {
      reply.type('application/json')
      reply.send({ foo: 'bar' })
    })

    fastify.post('/', (req, reply) => {
      reply.type('application/json')
      reply.send({ hello: 'world' })
    })

    next()
}

API: fastifyPostGraphile(database, schemas, settings)

Name Status Type Default Description
database Required String/Object - An object or string that will be passed to the pg library and used to connect to a PostgreSQL backend, OR a pg.Pool to use.
schemas Optional String/[String] 'public' A string, or array of strings, which specifies the PostgreSQL schema(s) to expose via PostGraphile; defaults to 'public'
settings Optional Object - An object containing PostGraphile options to be combined with the default recommended options.

Default Options

The default options applied by fastify-postgraphile are the recommended PostGraphile options.

These defaults can be added to or changed by passing additional PostGraphile Options in with the settings object. The extendedErrors and appendPlugins arrays will be concatenated with any new options passed in.

Note: If you need to disable the default simplifyInflector plugin, pass the exported reference to it into the skipPlugins option array.

e.g.

skipPlugins: [fastifyPostGraphile.DEFAULT_INFLECTOR]

Run the example

Configure and run a local Postgres Container

docker run --name postgraphile-example \
  -e POSTGRES_PASSWORD=examplepassword \
  -d -p 5432:5432 postgres
ifconfig -u | grep 'inet ' | grep -v 127.0.0.1 | cut -d\  -f2 | head -1
# <your-public-ip> <-- Copy this

Add the following to your .envrc file:

export DATABASE_URL=postgres://postgres:examplepassword@<your-public-ip>:5432/postgres?sslmode=disable

Allow .envrc file

direnv allow .

Run the example migration

npx -p pg -p node-pg-migrate -c "node-pg-migrate up -m examples/migrations"

Run the server

npm run example -- -l info -w

Make Requests to the Server

http localhost:3000
http post localhost:3000

Explore Graphiql

http://localhost:3000/graphiql