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

위 명령어를 사용하여 필요한 패키지를 설치합니다. drizzle-orm@libsql/client는 프로젝트에 필수적인 패키지이며, drizzle-kit은 개발 환경에서만 사용하는 개발 의존성 패키지입니다.

2단계 - 드라이버 초기화

Drizzle은 모든 @libsql/client 드라이버 변형을 기본적으로 지원합니다.

@libsql/client기본적으로 node 모듈로 임포트되며, 번들러에서 target이나 platform이 설정되면 자동으로 web 모듈로 변경됩니다. 예를 들어, esbuild --platform=browser와 같은 설정이 적용됩니다.
@libsql/client/nodenode 호환 모듈로, :memory:, file, wss, http, turso 연결 프로토콜을 지원합니다.
@libsql/client/webnext, nuxt, astro와 같은 풀스택 웹 프레임워크를 위한 모듈입니다.
@libsql/client/httphttphttps 연결 프로토콜을 위한 모듈입니다.
@libsql/client/wswswss 연결 프로토콜을 위한 모듈입니다.
@libsql/client/sqlite3:memory:file 연결 프로토콜을 위한 모듈입니다.
@libsql/client-wasmWASM을 위한 별도의 실험적 패키지입니다.

기본
Node
HTTP
웹 소켓
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 
  }
});

// users 테이블 정의
const users = s.sqliteTable("users", {
  id: s.integer(),
  name: s.text(),
});

// users 테이블에서 데이터 조회
const result = await db.select().from(users);

다음 단계는 무엇인가요?