Files
supabase/apps/docs/content/guides/database/drizzle.mdx
T
a0eff938ff New connection management docs (#29166)
* recreated connecting-to-postgres

* adding GUI quickstart section with DBeaver

* moved psql and pgadmin docs to GUI quickstart

* added Prisma installation docs. Moved postgres.js and Drizzle into own section

* added connection management docs

* moved supavisor troubleshooting guide into troubleshooting section. Probably should not merge without adding more guides

* updated IPv4 Add ons docs

* removed typo

* Update apps/docs/content/guides/platform/ipv4-address.mdx

Co-authored-by: Charis <26616127+charislam@users.noreply.github.com>

* Update apps/docs/content/guides/platform/ipv4-address.mdx

Co-authored-by: Charis <26616127+charislam@users.noreply.github.com>

* Update apps/docs/content/guides/database/supavisor.mdx

Co-authored-by: Charis <26616127+charislam@users.noreply.github.com>

* Update apps/docs/content/guides/database/prisma.mdx

Co-authored-by: Charis <26616127+charislam@users.noreply.github.com>

* Update apps/docs/content/guides/database/connection-management.mdx

Co-authored-by: Charis <26616127+charislam@users.noreply.github.com>

* Update apps/docs/content/guides/database/connection-management.mdx

Co-authored-by: Charis <26616127+charislam@users.noreply.github.com>

* Update apps/docs/components/Navigation/NavigationMenu/NavigationMenu.constants.ts

Co-authored-by: Charis <26616127+charislam@users.noreply.github.com>

* removed repetition in connection-management | added photos

* Update apps/docs/content/guides/database/connecting-to-postgres.mdx

Co-authored-by: Stas <sts@abc3.dev>

* Update apps/docs/content/guides/platform/ipv4-address.mdx

Co-authored-by: Stas <sts@abc3.dev>

* Update apps/docs/content/guides/database/connection-management.mdx

Co-authored-by: Stas <sts@abc3.dev>

* Update apps/docs/content/guides/database/connecting-to-postgres.mdx

Co-authored-by: Stas <sts@abc3.dev>

* Update apps/docs/content/guides/platform/ipv4-address.mdx

Co-authored-by: Charis <26616127+charislam@users.noreply.github.com>

* Update apps/docs/content/guides/database/connecting-to-postgres.mdx

Co-authored-by: Stas <sts@abc3.dev>

* updated proxy suggestions

* added redirects

* added images to connection-management guide

* added unique ids to titles in prisma-troubleshooting section

* added images to connection guide

* added new images to prisma guide

* reformatted admonition

---------

Co-authored-by: Brian Brennglass <brian@Brians-MacBook-Pro.local>
Co-authored-by: Charis <26616127+charislam@users.noreply.github.com>
Co-authored-by: Stas <sts@abc3.dev>
2024-10-03 19:42:49 +00:00

93 lines
2.4 KiB
Plaintext

---
id: 'drizzle'
title: 'Drizzle'
description: 'Drizzle Quickstart'
breadcrumb: 'ORM Quickstarts'
hideToc: true
---
### Connecting with Drizzle
[Drizzle ORM](https://github.com/drizzle-team/drizzle-orm) is a TypeScript ORM for SQL databases designed with maximum type safety in mind. You can use their ORM to connect to your database.
<Admonition type="note">
If you plan on solely using Drizzle instead of the Supabase Data API (PostgREST), you can turn off the latter in the [API Settings](https://supabase.com/dashboard/project/_/settings/api).
</Admonition>
<StepHikeCompact>
<StepHikeCompact.Step step={1}>
<StepHikeCompact.Details title="Install">
Install Drizzle and related dependencies.
</StepHikeCompact.Details>
<StepHikeCompact.Code>
```shell
npm i drizzle-orm postgres
npm i -D drizzle-kit
```
</StepHikeCompact.Code>
</StepHikeCompact.Step>
<StepHikeCompact.Step step={2}>
<StepHikeCompact.Details title="Create your models">
Create a `schema.ts` file and define your models.
</StepHikeCompact.Details>
<StepHikeCompact.Code>
```ts schema.ts
import { pgTable, serial, text, varchar } from "drizzle-orm/pg-core";
export const users = pgTable('users', {
id: serial('id').primaryKey(),
fullName: text('full_name'),
phone: varchar('phone', { length: 256 }),
});
```
</StepHikeCompact.Code>
</StepHikeCompact.Step>
<StepHikeCompact.Step step={3}>
<StepHikeCompact.Details title="Connect">
Connect to your database using the Connection Pooler.
In your [`Database Settings`](https://supabase.com/dashboard/project/_/settings/database), make sure `Use connection pooler` is checked, then copy the URI and save it as the `DATABASE_URL` environment variable. Remember to replace the password placeholder with your actual database password.
</StepHikeCompact.Details>
<StepHikeCompact.Code>
```ts db.ts
import 'dotenv/config'
import { drizzle } from 'drizzle-orm/postgres-js'
import postgres from 'postgres'
const connectionString = process.env.DATABASE_URL
// Disable prefetch as it is not supported for "Transaction" pool mode
export const client = postgres(connectionString, { prepare: false })
export const db = drizzle(client);
```
</StepHikeCompact.Code>
</StepHikeCompact.Step>
</StepHikeCompact>