v0Source HandlersPostgreSQL / PostGraphile
⚠️
This is the documentation for the old GraphQL Mesh version v0. We recommend upgrading to the latest GraphQL Mesh version v1.

Migrate to GraphQL Mesh v1

PostgreSQL / PostGraphile

image

This handler allows you to use the GraphQL schema created by PostGraphile, based on a PostgreSQL database schema.

To get started, install the handler library:

npm i @graphql-mesh/postgraphile

Now, you can use it directly in your Mesh config file:

.meshrc.yaml
sources:
  - name: MyDb
    handler:
      postgraphile:
        connectionString: postgres://postgres:password@localhost/postgres
        # You can also use environment variables like below
        # connectionString: postgres://{env.POSTGRES_USER}:{env.POSTGRES_PASSWORD}@localhost/postgres
💡

You can check out our example that uses schema stitching with a PostgreSQL data source. Click here to open the example on GitHub.

External Plugins (e.g. FederationPlugin, PgManyToManyPlugin, PostGISPlugin)

You can add PostGraphile plugins for example FederationPlugin. You can install it like below:

npm i @graphile/federation

and add those in your configuration file;

.meshrc.yaml
sources:
  - name: MyDb
    handler:
      postgraphile:
        connectionString: postgres://postgres:password@localhost/postgres
        appendPlugins:
          - '@graphile/federation'
💡

Learn more about PostGraphile plugins here.

Federation and Automatic Type Merging support

The Federation plugin converts your Postgraphile schema into a federated schema that can also be recognized by Stitching, which brings Automatic Type Merging. So you can install @graphile/federation package like above and add it under appendPlugins.

Many-to-Many support

Suppose you want to have automatic many-to-many mapping across your entities. You can install @graphile-contrib/pg-many-to-many and add it under appendPlugins.

npm i @graphile-contrib/pg-many-to-many

PostGIS Support

If you use PostGIS in your PostgreSQL database, you need to install @graphile/postgis package and add it under appendPlugins.

npm i @graphile/postgis
💡

See more plugins to improve the experience!

Config API Reference

  • connectionString (type: String) - A connection string to your Postgres database
  • schemaName (type: Array of String, required) - An array of strings which specifies the PostgreSQL schemas that PostGraphile will use to create a GraphQL schema. The default schema is the public schema.
  • pool (type: Any) - Connection Pool instance or settings or you can provide the path of a code file that exports any of those
  • appendPlugins (type: Array of String) - Extra PostGraphile v5 plugins to append (must be GraphileConfig.Plugin objects compatible with v5)
  • skipPlugins (type: Array of String) - PostGraphile v5 plugin names to disable (e.g. “NodePlugin”)
  • options - - A PostGraphile v5 preset object or the path to a file exporting one (e.g. ”./my-config#preset”). This is merged on top of the default PostGraphileAmberPreset. See the PostGraphile v5 docs for more information. One of:
    • JSON
    • String
  • contextOptions (type: Any) - A file that exports a function which takes mesh context as a parameter and returns extra context to merge into the GraphQL execution context (e.g. ”./my-function#getContext”). The returned object may include pgSettings for per-request PostgreSQL settings. See the PostGraphile v5 docs for more information.