Drizzle <> Turso
This guide assumes familiarity with:
- Drizzle์ ์ฌ์ฉํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ๊ธฐ์ด
- Turso ๋ฐ์ดํฐ๋ฒ ์ด์ค - ์น์ฌ์ดํธ
- LibSQL ๋๋ผ์ด๋ฒ - ์น์ฌ์ดํธ & GitHub
**๊ณต์ ์น์ฌ์ดํธ**์ ๋ฐ๋ฅด๋ฉด, Turso๋ libSQL ๊ธฐ๋ฐ์ ์ฃ์ง SQLite ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋น์ค์ ๋๋ค.
Drizzle ORM์ libSQL ๋๋ผ์ด๋ฒ๋ฅผ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํฉ๋๋ค.
์ฐ๋ฆฌ๋ SQL ๋ฐฉ์ธ๊ณผ ๋ฐฉ์ธ๋ณ ๋๋ผ์ด๋ฒ ๋ฐ ๊ตฌ๋ฌธ์ ์์ฉํ๋ฉฐ ๊ฐ์ฅ ์ธ๊ธฐ ์๋
SQLite์ ์ ์ฌํ all, get, values ๋ฐ run ์ฟผ๋ฆฌ ๋ฉ์๋ ๊ตฌ๋ฌธ์ ๋ฐ์ํฉ๋๋ค.
1๋จ๊ณ - ํจํค์ง ์ค์น
npm
yarn
pnpm
bun
npm i drizzle-orm @libsql/client
npm i -D drizzle-kit
2๋จ๊ณ - ๋๋ผ์ด๋ฒ ์ด๊ธฐํ
Drizzle์ ๋ชจ๋ @libsql/client ๋๋ผ์ด๋ฒ ๋ณํ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํฉ๋๋ค:
@libsql/client | defaults to node import, automatically changes to web if target or platform is set for bundler, e.g. esbuild --platform=browser |
@libsql/client/node | node compatible module, supports :memory:, file, wss, http and turso connection protocols |
@libsql/client/web | module for fullstack web frameworks like next, nuxt, astro, etc. |
@libsql/client/http | module for http and https connection protocols |
@libsql/client/ws | module for ws and wss connection protocols |
@libsql/client/sqlite3 | module for :memory: and file connection protocols |
@libsql/client-wasm | Separate experimental package for WASM |
default
node
web
http
web sockets
wasm
import { drizzle } from 'drizzle-orm/libsql';
const db = drizzle({ connection: {
url: process.env.DATABASE_URL,
authToken: process.env.DATABASE_AUTH_TOKEN
}});๊ธฐ์กด ๋๋ผ์ด๋ฒ๋ฅผ ์ ๊ณตํด์ผ ํ๋ ๊ฒฝ์ฐ:
default
web
import { drizzle } from 'drizzle-orm/libsql';
import { createClient } from '@libsql/client';
const client = createClient({
url: process.env.DATABASE_URL,
authToken: process.env.DATABASE_AUTH_TOKEN
});
const db = drizzle({ client });
const result = await db.select().from(users).all()3๋จ๊ณ - ์ฟผ๋ฆฌ ์คํ
import { drizzle } from 'drizzle-orm/libsql';
import * as s from 'drizzle-orm/sqlite-core';
const db = drizzle({ connection: {
url: process.env.DATABASE_URL,
authToken: process.env.DATABASE_AUTH_TOKEN
}});
const users = s.sqliteTable("users", {
id: s.integer(),
name: s.text(),
})
const result = await db.select().from(users);