diff --git a/versioned_docs/version-3.x/_components/PackageInstall.tsx b/versioned_docs/version-3.x/_components/PackageInstall.tsx index 53bf880..20dbf00 100644 --- a/versioned_docs/version-3.x/_components/PackageInstall.tsx +++ b/versioned_docs/version-3.x/_components/PackageInstall.tsx @@ -20,9 +20,8 @@ const PackageInstall = ({ devDependencies, dependencies }: Props) => { {pkgManagers.map((pkg) => ( - {`${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` : ''}`} ))} diff --git a/versioned_docs/version-3.x/recipe/databases/_category_.yml b/versioned_docs/version-3.x/recipe/databases/_category_.yml new file mode 100644 index 0000000..649e74c --- /dev/null +++ b/versioned_docs/version-3.x/recipe/databases/_category_.yml @@ -0,0 +1,7 @@ +position: 1 +label: Databases +collapsible: true +collapsed: true +link: + type: generated-index + title: Databases diff --git a/versioned_docs/version-3.x/recipe/databases/neon.md b/versioned_docs/version-3.x/recipe/databases/neon.md new file mode 100644 index 0000000..4004c3f --- /dev/null +++ b/versioned_docs/version-3.x/recipe/databases/neon.md @@ -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 + + + +## 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 { + const db = createClient(); + // use db... + await db.$disconnect(); + return new Response('ok'); +} +``` diff --git a/versioned_docs/version-3.x/recipe/databases/postgres.md b/versioned_docs/version-3.x/recipe/databases/postgres.md new file mode 100644 index 0000000..15c0de2 --- /dev/null +++ b/versioned_docs/version-3.x/recipe/databases/postgres.md @@ -0,0 +1,28 @@ +--- +sidebar_position: 1 +--- + +import PackageInstall from '../../_components/PackageInstall'; + +# PostgreSQL + +## Installing driver + + + +## 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, + }), + }), +}); +``` diff --git a/versioned_docs/version-3.x/recipe/databases/sqlite.md b/versioned_docs/version-3.x/recipe/databases/sqlite.md new file mode 100644 index 0000000..581e126 --- /dev/null +++ b/versioned_docs/version-3.x/recipe/databases/sqlite.md @@ -0,0 +1,24 @@ +--- +sidebar_position: 2 +--- + +import PackageInstall from '../../_components/PackageInstall'; + +# SQLite + +## Installing driver + + + +## 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') }), +}); +```