postgraphile-apollo-server

Helper for using PostGraphile with Apollo Server

Usage no npm install needed!

<script type="module">
  import postgraphileApolloServer from 'https://cdn.skypack.dev/postgraphile-apollo-server';
</script>

README

postgraphile-apollo-server

This module performs some of the boilerplate for using PostGraphile with Apollo Server.

Usage

const pg = require("pg");
const { ApolloServer } = require("apollo-server");
const { makeSchemaAndPlugin } = require("postgraphile-apollo-server");

const pgPool = new pg.Pool({
  connectionString: process.env.DATABASE_URL
});

async function main() {
  const { schema, plugin } = await makeSchemaAndPlugin(
    pgPool,
    'public', // PostgreSQL schema to use
    {
      // PostGraphile options, see:
      // https://www.graphile.org/postgraphile/usage-library/
    }
  );

  const server = new ApolloServer({
    schema,
    plugins: [plugin]
  });

  const { url } = await server.listen();
  console.log(`🚀 Server ready at ${url}`);
}

main().catch(e => {
  console.error(e);
  process.exit(1);
});

Limitations

Not all PostGraphile library options are supported at this time; for example watchPg is not.

Example

https://github.com/graphile/postgraphile-example-apollo-server

Changelog

  • v0.1.0 - initial release
  • v0.1.1 - fix headers after Apollo Server breaking change (thanks @miguelocarvajal)

TODO:

  • Improve this README!
  • Compile a list of the unsupported PostGraphile library options
  • Don't require a pgPool to be passed - allow a connection string instead
  • Add tests