mirror of
https://github.com/shishantbiswas/bknd.git
synced 2026-03-16 20:37:21 +00:00
102 lines
2.5 KiB
Markdown
102 lines
2.5 KiB
Markdown
# Postgres adapter for `bknd` (experimental)
|
|
This packages adds an adapter to use a Postgres database with [`bknd`](https://github.com/bknd-io/bknd). It works with both `pg` and `postgres` drivers, and supports custom postgres connections.
|
|
* works with any Postgres database (tested with Supabase, Neon, Xata, and RDS)
|
|
* choose between `pg` and `postgres` drivers
|
|
* create custom postgres connections with any kysely postgres dialect
|
|
|
|
## Installation
|
|
Install the adapter with:
|
|
```bash
|
|
npm install @bknd/postgres
|
|
```
|
|
|
|
## Using `pg` driver
|
|
Install the [`pg`](https://github.com/brianc/node-postgres) driver with:
|
|
```bash
|
|
npm install pg
|
|
```
|
|
|
|
Create a connection:
|
|
|
|
```ts
|
|
import { pg } from "@bknd/postgres";
|
|
|
|
// accepts `pg` configuration
|
|
const connection = pg({
|
|
host: "localhost",
|
|
port: 5432,
|
|
user: "postgres",
|
|
password: "postgres",
|
|
database: "postgres",
|
|
});
|
|
|
|
// or with a connection string
|
|
const connection = pg({
|
|
connectionString: "postgres://postgres:postgres@localhost:5432/postgres",
|
|
});
|
|
```
|
|
|
|
## Using `postgres` driver
|
|
|
|
Install the [`postgres`](https://github.com/porsager/postgres) driver with:
|
|
```bash
|
|
npm install postgres
|
|
```
|
|
|
|
Create a connection:
|
|
|
|
```ts
|
|
import { postgresJs } from "@bknd/postgres";
|
|
|
|
// accepts `postgres` configuration
|
|
const connection = postgresJs("postgres://postgres:postgres@localhost:5432/postgres");
|
|
```
|
|
|
|
## Using custom postgres dialects
|
|
|
|
You can create a custom kysely postgres dialect by using the `createCustomPostgresConnection` function.
|
|
|
|
```ts
|
|
import { createCustomPostgresConnection } from "@bknd/postgres";
|
|
|
|
const connection = createCustomPostgresConnection(MyDialect)({
|
|
// your custom dialect configuration
|
|
supports: {
|
|
batching: true
|
|
},
|
|
excludeTables: ["my_table"],
|
|
plugins: [new MyKyselyPlugin()],
|
|
});
|
|
```
|
|
|
|
### Custom `neon` connection
|
|
|
|
```typescript
|
|
import { createCustomPostgresConnection } from "@bknd/postgres";
|
|
import { NeonDialect } from "kysely-neon";
|
|
|
|
const connection = createCustomPostgresConnection(NeonDialect)({
|
|
connectionString: process.env.NEON,
|
|
});
|
|
```
|
|
|
|
### Custom `xata` connection
|
|
|
|
```typescript
|
|
import { createCustomPostgresConnection } from "@bknd/postgres";
|
|
import { XataDialect } from "@xata.io/kysely";
|
|
import { buildClient } from "@xata.io/client";
|
|
|
|
const client = buildClient();
|
|
const xata = new client({
|
|
databaseURL: process.env.XATA_URL,
|
|
apiKey: process.env.XATA_API_KEY,
|
|
branch: process.env.XATA_BRANCH,
|
|
});
|
|
|
|
const connection = createCustomPostgresConnection(XataDialect, {
|
|
supports: {
|
|
batching: false,
|
|
},
|
|
})({ xata });
|
|
``` |