Drizzle ORM
소개
- drizzle.team
- 타입스크립트를 지원하며 turso db 와 연결해서 사용할 수 있다.
- 프로젝트 구조
- .env # 환경변수 db url, token
- drizzle.config.ts # drizzle 설정 파일
설치
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=__데이터베이스토큰__ 중요... 사용하려는 데이터베이스에서 토큰을 새로 생성해야한다.(즉 토큰이 관리용이 따로있고 데이터베이스용이 따로있다)
- turso db show blog —url 로 url 확인 (blog 는 데이터베이스명)
- turso db tokens create 데이터베이스명 을 쳐서 데이터베이스용 토큰을 얻을 수 있다. (대시보드에서도 됨)
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