npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@keystonejs/adapter-prisma

v3.2.2

Published

KeystoneJS Prisma Database Adapter

Downloads

3,255

Readme

Prisma database adapter

This is the last active development release of this package as Keystone 5 is now in a 6 to 12 month active maintenance phase. For more information please read our Keystone 5 and beyond post.

View changelog

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 Preview. Once Prisma Migrate is out of preview 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

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'.

migrationMode

Default: 'dev'

Controls how and when migrations are applied. One of 'dev', 'prototype', 'createOnly', or 'none'. In prototype mode, prisma db push is used to sync the database tables without generating migration files. In dev mode, migrations files are generated and applied whenever the schema changes. In createOnly mode, migrations are generated but not applied. In none mode, no migrations are generated or applied.

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:

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.