Skip to content
KeystoneJS LogoKeystoneJS

Prisma database adapter

The Prisma adapter allows Keystone to connect a database using Prisma Client, a type-safe and auto-generated database client. You can learn more about Prisma Client in the Prisma docs.

Tip: Want to get started with Keystone + Prisma? Follow the guide!

Warning: The Keystone Prisma adapter is not currently production-ready. It depends on the Prisma Migrate system which is currently flagged as EXPERIMENTAL. Once Prisma Migrate is out of experimental mode, we will release a production-ready version of this package.

Note: This adapter currently only supports PostgreSQL databases, and has other limitations. For more details, see our Prisma Adapter - Production Ready Checklist

Usage

JS
const { PrismaAdapter } = require('@keystonejs/adapter-prisma');

const keystone = new Keystone({
  adapter: new PrismaAdapter({ url: 'postgres://...' }),
});

Config

url

Default: DATABASE_URL

The connection string for your database, in the form postgres://<user>:<password>@<host>:<port>/<dbname>. By default it will use the value of the environment variable DATABASE_URL. You can learn more about the connection string format used in the Prisma docs.

getPrismaPath

Default: ({ prismaSchema }) => '.prisma'

A function which returns a directory name for storing the generated Prisma schema and client.

getDbSchemaName

Default: ({ prismaSchema }) => 'public'

A function which returns a database schema name to use for storage of all Keystone tables in your database.

You can also set the schema name by including the suffix ?schema=... in your DATABASE_URL or url. In this case you should set this value to () => null.

enableLogging

Default: false

Enables logging at the query level in the Prisma client.

dropDatabase

Default: false

Allow the adapter to drop the entire database and recreate the tables / foreign keys based on the list schema in your application. This option is ignored in production, i.e. when the environment variable NODE_ENV === 'production'.

Setup

Before running Keystone with the Prisma adapter you will need to have a PostgreSQL database to connect to.

If you already have a database then you can use its connection string in the url config option. If you don't have a database already then you can create one locally with the following commands.

createdb -U postgres keystone
psql keystone -U postgres -c "CREATE USER keystone5 PASSWORD 'change_me_plz'"
psql keystone -U postgres -c "GRANT ALL ON DATABASE keystone TO keystone5;"

If using the above, you will want to set a connection string of:

JS
const keystone = new Keystone({
  adapter: new PrismaAdapter({ url: `postgres://keystone5:change_me_plz@localhost:5432/keystone` }),
});

See the adapters setup guide for more details on how to setup a database.

On this page

  • Usage
  • Config
  • url
  • getPrismaPath
  • getDbSchemaName
  • enableLogging
  • dropDatabase
  • Setup
Edit on GitHub