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
.envrc
file:
Add the following to your 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