Drizzle ORM

소개

설치

bun add drizzle-orm @libsql/client dotenv
bun add -D drizzle-kit tsx

환경 변수 설정 .env

TURSO_DATABASE_URL=libsql://blog-sixtick.aws-us-west-2.turso.io
TURSO_AUTH_TOKEN=__데이터베이스토큰__ 중요... 사용하려는 데이터베이스에서 토큰을 새로 생성해야한다.(즉 토큰이 관리용이 따로있고 데이터베이스용이 따로있다)

db 연결 설정 (src/db/index.ts)

import { drizzle } from 'drizzle-orm/libsql';

// You can specify any property from the libsql connection options
export const db = drizzle({ 
  connection: { 
    url: import.meta.env.TURSO_DATABASE_URL!, 
    authToken: import.meta.env.TURSO_AUTH_TOKEN!
  }
});

table 정의 (src/db/schema.ts)

import { int, sqliteTable } from "drizzle-orm/sqlite-core";

export const likes = sqliteTable("likes", {
  id: int().primaryKey({ autoIncrement: true }),
  count: int().notNull(),
});

drizzle.config.ts 설정 (파일 새로 생성해야 함.)

import 'dotenv/config';
import { defineConfig } from 'drizzle-kit';

const { TURSO_DATABASE_URL, TURSO_AUTH_TOKEN } = process.env; // 노드환경의 process 써야함
console.log(TURSO_DATABASE_URL);

if (!TURSO_DATABASE_URL || !TURSO_AUTH_TOKEN) {
  throw new Error("TURSO_CONNECTION_URL 또는 TURSO_AUTH_TOKEN 환경 변수가 설정되지 않았습니다.");
}

export default defineConfig({
  out: './drizzle',
  schema: './src/db/schema.ts',
  dialect: 'turso',
  dbCredentials: {
    url: TURSO_DATABASE_URL,
    authToken: TURSO_AUTH_TOKEN,
  },
});

스키마 DB에 동기화

bunx drizzle-kit push
# bunx drizzle-kit studio