PostgreSQL / PostGraphile
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:
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;
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 databaseschemaName
(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 thoseappendPlugins
(type:Array of String
) - Extra Postgraphile Plugins to appendskipPlugins
(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 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)contextOptions
(type:Any
) - A file that exports a function which takes context as a paramter and returns postgraphile context options (e.g. "./my-function#pgSettings"). See the postgraphile docs for more information.