Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions versioned_docs/version-3.x/_components/PackageInstall.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,8 @@ const PackageInstall = ({ devDependencies, dependencies }: Props) => {
{pkgManagers.map((pkg) => (
<TabItem key={pkg.name} value={pkg.name} label={pkg.name}>
<CodeBlock language="bash">
{`${devDependencies?.length ? `${pkg.command} ${pkg.dev} ${devDependencies.join(' ')}\n` : ''}${
dependencies?.length ? `${pkg.command} ${dependencies.join(' ')}` : ''
}`}
{`${dependencies?.length ? `${pkg.command} ${dependencies.join(' ')}` : ''}
${devDependencies?.length ? `${pkg.command} ${pkg.dev} ${devDependencies.join(' ')}\n` : ''}`}
</CodeBlock>
</TabItem>
))}
Expand Down
7 changes: 7 additions & 0 deletions versioned_docs/version-3.x/recipe/databases/_category_.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
position: 1
label: Databases
collapsible: true
collapsed: true
link:
type: generated-index
title: Databases
43 changes: 43 additions & 0 deletions versioned_docs/version-3.x/recipe/databases/neon.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
---
sidebar_position: 3
---

import PackageInstall from '../../_components/PackageInstall';

# Neon

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.

## Installing driver

<PackageInstall dependencies={['@neondatabase/serverless']} />

## Creating ZenStackClient

```ts
import { schema } from '@/zenstack/schema';
import { Pool } from '@neondatabase/serverless';
import { ZenStackClient } from '@zenstackhq/orm';
import { PostgresDialect } from '@zenstackhq/orm/dialects/postgres';

const db = new ZenStackClient(schema, {
dialect: new PostgresDialect({
pool: new Pool({
connectionString: process.env.DATABASE_URL,
}),
}),
});
```

## Notes about edge runtime

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.

```ts
export async function handler(req: Request): Promise<Response> {
const db = createClient();
// use db...
await db.$disconnect();
return new Response('ok');
}
```
28 changes: 28 additions & 0 deletions versioned_docs/version-3.x/recipe/databases/postgres.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
---
sidebar_position: 1
---

import PackageInstall from '../../_components/PackageInstall';

# PostgreSQL

## Installing driver

<PackageInstall dependencies={['pg']} devDependencies={['@types/pg']} />

## Creating ZenStackClient

```ts
import { schema } from './zenstack/schema';
import { Pool } from 'pg';
import { ZenStackClient } from '@zenstackhq/orm';
import { PostgresDialect } from '@zenstackhq/orm/dialects/postgres';

const db = new ZenStackClient(schema, {
dialect: new PostgresDialect({
pool: new Pool({
connectionString: process.env.DATABASE_URL,
}),
}),
});
```
24 changes: 24 additions & 0 deletions versioned_docs/version-3.x/recipe/databases/sqlite.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
sidebar_position: 2
---

import PackageInstall from '../../_components/PackageInstall';

# SQLite

## Installing driver

<PackageInstall dependencies={['better-sqlite3']} devDependencies={['@types/better-sqlite3']} />

## Creating ZenStackClient

```ts
import { schema } from './zenstack/schema';
import SQLite from 'better-sqlite3';
import { ZenStackClient } from '@zenstackhq/orm';
import { SqliteDialect } from '@zenstackhq/orm/dialects/sqlite';

const db = new ZenStackClient(schema, {
dialect: new SqliteDialect({ database: new SQLite('./dev.db') }),
});
```