@keystonejs/adapter-knex

KeystoneJS Knex Database Adapter

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
@keystonejs/adapter-knex
13.3.2a year ago3 years agoMinified + gzip package size for @keystonejs/adapter-knex in KB

Readme

Knex 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 Knex adapter is a general purpose adapter which can be used to connect to a range of different database backends. At present, the only fully tested backend is Postgres, however Knex gives the potential for MSSQL, MySQL, MariaDB, SQLite3, Oracle, and Amazon Redshift to be supported.

Usage

const { KnexAdapter } = require('@keystonejs/adapter-knex');

const keystone = new Keystone({
  adapter: new KnexAdapter({...}),
});

Config

schemaName

Default: 'public'
All postgres tables are grouped within a schema and public is the default schema.

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 NODEENV === 'production'.

knexOptions

These options are passed directly through to Knex.
See the knex docs
for more details.
Default:
{
  client: 'postgres',
  connection: process.env.CONNECT_TO || process.env.DATABASE_URL || process.env.KNEX_URI
}

Debugging

To log all Knex queries, run the server with the environment variable DEBUG=knex:query.

Setup

Before running Keystone with the Knex adapter you should configure a database. By default Knex will look for a Postgres database on the default port, matching the project name, as the current user.
In most cases this database will not exist and you will want to configure a user and database for your application.
Assuming you're on MacOS and have Postgres installed the build-test-db.sh does this for you:
./build-test-db.sh

Otherwise, you can run these steps manually:
```shell allowCopy=false showLanguage=false createdb -U postgres keystone psql keystone -U postgres -c "CREATE USER keystone5 PASSWORD 'changemeplz'" 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: postgres://keystone5:change_me_plz@localhost:5432/keystone