Drizzle <> Turso

This guide assumes familiarity with:

**๊ณต์‹ ์›น์‚ฌ์ดํŠธ**์— ๋”ฐ๋ฅด๋ฉด, 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/clientdefaults to node import, automatically changes to web if target or platform is set for bundler, e.g. esbuild --platform=browser
@libsql/client/nodenode compatible module, supports :memory:, file, wss, http and turso connection protocols
@libsql/client/webmodule for fullstack web frameworks like next, nuxt, astro, etc.
@libsql/client/httpmodule for http and https connection protocols
@libsql/client/wsmodule for ws and wss connection protocols
@libsql/client/sqlite3module for :memory: and file connection protocols
@libsql/client-wasmSeparate 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);

๋‹ค์Œ ๋‹จ๊ณ„๋Š”?