Docs
Source Handlers
PostgreSQL / PostGraphile

PostgreSQL / PostGraphile

image

This handler allows you to use the GraphQL schema created by PostGraphile (opens in a new tab), based on a PostgreSQL database schema.

To get started, install the handler library:

Terminal
yarn add @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 (opens in a new tab).

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

You can add PostGraphile plugins (opens in a new tab) for example FederationPlugin. You can install it like below:

Terminal
yarn add @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 (opens in a new tab).

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.

Terminal
yarn add @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.

Terminal
yarn add @graphile/postgis
💡

See more plugins (opens in a new tab) 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 Plugins to append
  • skipPlugins (type: Array of String) - Postgraphile Plugins to skip (e.g. "graphile-build#NodePlugin")
  • options - - Extra Postgraphile options that will be added to the postgraphile constructor. It can either be an object or a string pointing to the object's path (e.g. "./my-config#options"). See the postgraphile docs (opens in a new tab) for more information. One of:
    • JSON
    • String
  • subscriptions (type: Boolean) - Enable GraphQL websocket transport support for subscriptions (default: true)
  • live (type: Boolean) - Enables live-query support via GraphQL subscriptions (sends updated payload any time nested collections/records change) (default: true)