# @koikorn/adapter-knex

> KeystoneJS Knex Database Adapter

Latest version **10.1.0** (published 2020-07-13) · MIT license · 0 weekly downloads

## Install

```sh
npm install @koikorn/adapter-knex
pnpm add @koikorn/adapter-knex
yarn add @koikorn/adapter-knex
bun add @koikorn/adapter-knex
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 10.1.0 |
| Published | 2020-07-13 |
| First published | 2020-07-13 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >=10.0.0 |
| Dependencies | 8 |
| Unpacked size | 72.7 KB |
| Known vulnerabilities | 0 (+1 in 1 direct dependencies) |
| Install scripts | no |
| Author | The KeystoneJS Development Team |
| Maintainers | lorenhaim |

## Links

- npm: https://www.npmjs.com/package/@koikorn/adapter-knex
- Repository: https://github.com/keystonejs/keystone/tree/master/packages/adapter-knex
- npm.io page: https://npm.io/package/@koikorn/adapter-knex

## Dependencies (8)

- [pg](https://npm.io/package/pg.md) ^8.0.3
- [knex](https://npm.io/package/knex.md) ^0.21.1
- [p-settle](https://npm.io/package/p-settle.md) ^3.1.0
- [@koikorn/utils](https://npm.io/package/@koikorn/utils.md) ^5.4.1
- [@koikorn/logger](https://npm.io/package/@koikorn/logger.md) ^5.1.2
- [@koikorn/keystone](https://npm.io/package/@koikorn/keystone.md) ^11.0.0
- [@sindresorhus/slugify](https://npm.io/package/@sindresorhus/slugify.md) ^0.11.0
- [@koikorn/fields-auto-increment](https://npm.io/package/@koikorn/fields-auto-increment.md) ^5.1.9

## Recent versions

- 10.1.0 (latest) — 2020-07-13

## README

<!--[meta]
section: api
subSection: database-adapters
title: Knex adapter
[meta]-->

# Knex database adapter

[![View changelog](https://img.shields.io/badge/changelogs.xyz-Explore%20Changelog-brightgreen)](https://changelogs.xyz/@koikorn/adapter-knex)

The [Knex](https://knexjs.org/#changelog) 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

```javascript
const { KnexAdapter } = require('@koikorn/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 NODE_ENV === 'production'.

### `knexOptions`

These options are passed directly through to Knex.

See the [knex docs](https://knexjs.org/#Installation-client) for more details.

_**Default:**_

```javascript
{
  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:

```shell
./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 'k3yst0n3'"
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:k3yst0n3@localhost:5432/keystone`

---
_Source: https://npm.io/package/@koikorn/adapter-knex · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
