Drizzle <> Supabase
This guide assumes familiarity with:
- Drizzle์ ์ฌ์ฉํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ๊ธฐ์ด
- Drizzle PostgreSQL ๋๋ผ์ด๋ฒ - ๋ฌธ์
**๊ณต์ ์น์ฌ์ดํธ**์ ๋ฐ๋ฅด๋ฉด, Supabase๋ ์ต์ํ์ ๊ตฌ์ฑ์ผ๋ก ์์ ํ๊ณ ์ฑ๋ฅ์ด ๋ฐ์ด๋ Postgres ๋ฐฑ์๋๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํ ์คํ ์์ค Firebase ๋์์ ๋๋ค.
๊ณต์ Supabase + Drizzle ๋ฌธ์๋ฅผ ํ์ธํ์ธ์.
1๋จ๊ณ - ํจํค์ง ์ค์น
npm
yarn
pnpm
bun
npm i drizzle-orm postgres
npm i -D drizzle-kit
2๋จ๊ณ - ๋๋ผ์ด๋ฒ ์ด๊ธฐํ ๋ฐ ์ฟผ๋ฆฌ ์คํ
import { drizzle } from 'drizzle-orm/postgres-js'
const db = drizzle(process.env.DATABASE_URL);
const allUsers = await db.select().from(...);๊ธฐ์กด ๋๋ผ์ด๋ฒ๋ฅผ ์ ๊ณตํด์ผ ํ๋ ๊ฒฝ์ฐ:
import { drizzle } from 'drizzle-orm/postgres-js'
import postgres from 'postgres'
const client = postgres(process.env.DATABASE_URL)
const db = drizzle({ client });
const allUsers = await db.select().from(...);Supabase๋ฅผ ํตํด ์ฐ๊ฒฐ ํ๋ง์ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ๊ณ (์ฌ๊ธฐ์ ์ค๋ช ๋จ) โTransactionโ ํ ๋ชจ๋๊ฐ ํ์ฑํ๋ ๊ฒฝ์ฐ, prepared statement๊ฐ ์ง์๋์ง ์์ผ๋ฏ๋ก prepare๋ฅผ ๋๋๋ก ํ์ธ์.
import { drizzle } from 'drizzle-orm/postgres-js'
import postgres from 'postgres'
// "Transaction" ํ ๋ชจ๋์์๋ prefetch๊ฐ ์ง์๋์ง ์์ผ๋ฏ๋ก ๋นํ์ฑํํฉ๋๋ค
const client = postgres(process.env.DATABASE_URL, { prepare: false })
const db = drizzle({ client });
const allUsers = await db.select().from(...);์๋ฒ๋ฆฌ์ค ํ๊ฒฝ์์๋ Connection Pooler๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํ๊ณ , ์ฅ๊ธฐ ์คํ ์๋ฒ์์๋ Direct Connection์ ์ฌ์ฉํ์ธ์.