Skip to content

Commit 8616368

Browse files
authored
doc: v3 db recipes (#523)
* doc: v3 db recipes * update
1 parent 245801a commit 8616368

File tree

5 files changed

+104
-3
lines changed

5 files changed

+104
-3
lines changed

versioned_docs/version-3.x/_components/PackageInstall.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,8 @@ const PackageInstall = ({ devDependencies, dependencies }: Props) => {
2020
{pkgManagers.map((pkg) => (
2121
<TabItem key={pkg.name} value={pkg.name} label={pkg.name}>
2222
<CodeBlock language="bash">
23-
{`${devDependencies?.length ? `${pkg.command} ${pkg.dev} ${devDependencies.join(' ')}\n` : ''}${
24-
dependencies?.length ? `${pkg.command} ${dependencies.join(' ')}` : ''
25-
}`}
23+
{`${dependencies?.length ? `${pkg.command} ${dependencies.join(' ')}` : ''}
24+
${devDependencies?.length ? `${pkg.command} ${pkg.dev} ${devDependencies.join(' ')}\n` : ''}`}
2625
</CodeBlock>
2726
</TabItem>
2827
))}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
position: 1
2+
label: Databases
3+
collapsible: true
4+
collapsed: true
5+
link:
6+
type: generated-index
7+
title: Databases
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
---
2+
sidebar_position: 3
3+
---
4+
5+
import PackageInstall from '../../_components/PackageInstall';
6+
7+
# Neon
8+
9+
Neon can be used with the regular `pg` driver as described in the [PostgreSQL](./postgres) guide. It also provides a serverless driver that uses HTTP/WebSocket protocol which works in edge environments. This guide explains how to use the serverless driver with ZenStack.
10+
11+
## Installing driver
12+
13+
<PackageInstall dependencies={['@neondatabase/serverless']} />
14+
15+
## Creating ZenStackClient
16+
17+
```ts
18+
import { schema } from '@/zenstack/schema';
19+
import { Pool } from '@neondatabase/serverless';
20+
import { ZenStackClient } from '@zenstackhq/orm';
21+
import { PostgresDialect } from '@zenstackhq/orm/dialects/postgres';
22+
23+
const db = new ZenStackClient(schema, {
24+
dialect: new PostgresDialect({
25+
pool: new Pool({
26+
connectionString: process.env.DATABASE_URL,
27+
}),
28+
}),
29+
});
30+
```
31+
32+
## Notes about edge runtime
33+
34+
Edge environments are ephemeral and often only live to serve a single request. Instead of holding a global singleton client instance, you should create a new one per request. The serverless driver is designed to be used this way.
35+
36+
```ts
37+
export async function handler(req: Request): Promise<Response> {
38+
const db = createClient();
39+
// use db...
40+
await db.$disconnect();
41+
return new Response('ok');
42+
}
43+
```
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
---
2+
sidebar_position: 1
3+
---
4+
5+
import PackageInstall from '../../_components/PackageInstall';
6+
7+
# PostgreSQL
8+
9+
## Installing driver
10+
11+
<PackageInstall dependencies={['pg']} devDependencies={['@types/pg']} />
12+
13+
## Creating ZenStackClient
14+
15+
```ts
16+
import { schema } from './zenstack/schema';
17+
import { Pool } from 'pg';
18+
import { ZenStackClient } from '@zenstackhq/orm';
19+
import { PostgresDialect } from '@zenstackhq/orm/dialects/postgres';
20+
21+
const db = new ZenStackClient(schema, {
22+
dialect: new PostgresDialect({
23+
pool: new Pool({
24+
connectionString: process.env.DATABASE_URL,
25+
}),
26+
}),
27+
});
28+
```
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
---
2+
sidebar_position: 2
3+
---
4+
5+
import PackageInstall from '../../_components/PackageInstall';
6+
7+
# SQLite
8+
9+
## Installing driver
10+
11+
<PackageInstall dependencies={['better-sqlite3']} devDependencies={['@types/better-sqlite3']} />
12+
13+
## Creating ZenStackClient
14+
15+
```ts
16+
import { schema } from './zenstack/schema';
17+
import SQLite from 'better-sqlite3';
18+
import { ZenStackClient } from '@zenstackhq/orm';
19+
import { SqliteDialect } from '@zenstackhq/orm/dialects/sqlite';
20+
21+
const db = new ZenStackClient(schema, {
22+
dialect: new SqliteDialect({ database: new SQLite('./dev.db') }),
23+
});
24+
```

0 commit comments

Comments
 (0)