Drizzle 는 SQL 유사 "쿼리 빌더" API 와 ORM 유사 쿼리 API 를 모두 지원하는 ORM 입니다. 이는 bun:sqlite 내장 모듈을 지원합니다.
bun init 으로 새 프로젝트를 생성하고 Drizzle 을 설치하여 시작해 보겠습니다.
bun init -y
bun add drizzle-orm
bun add -D drizzle-kit그런 다음 bun:sqlite 모듈을 사용하여 SQLite 데이터베이스에 연결하고 Drizzle 데이터베이스 인스턴스를 생성합니다.
import { drizzle } from "drizzle-orm/bun-sqlite";
import { Database } from "bun:sqlite";
const sqlite = new Database("sqlite.db");
export const db = drizzle(sqlite);데이터베이스를 실제로 확인하려면 index.ts 에 다음 라인을 추가하세요.
import { db } from "./db";
import { sql } from "drizzle-orm";
const query = sql`select "hello world" as text`;
const result = db.get<{ text: string }>(query);
console.log(result);그런 다음 Bun 으로 index.ts 를 실행하세요. Bun 은 자동으로 sqlite.db 를 생성하고 쿼리를 실행합니다.
bun run index.ts{
text: "hello world"
}이제 데이터베이스에 적절한 스키마를 부여해 보겠습니다. schema.ts 파일을 생성하고 movies 테이블을 정의하세요.
import { sqliteTable, text, integer } from "drizzle-orm/sqlite-core";
export const movies = sqliteTable("movies", {
id: integer("id").primaryKey(),
title: text("name"),
releaseYear: integer("release_year"),
});drizzle-kit CLI 를 사용하여 초기 SQL 마이그레이션을 생성할 수 있습니다.
bunx drizzle-kit generate --dialect sqlite --schema ./schema.ts이렇게 하면 .sql 마이그레이션 파일과 meta 디렉터리를 포함한 새 drizzle 디렉터리가 생성됩니다.
drizzle
├── 0000_ordinary_beyonder.sql
└── meta
├── 0000_snapshot.json
└── _journal.json간단한 migrate.ts 스크립트로 이 마이그레이션을 실행할 수 있습니다.
이 스크립트는 sqlite.db 에 기록하는 SQLite 데이터베이스에 새 연결을 생성한 다음 drizzle 디렉터리의 모든 실행되지 않은 마이그레이션을 실행합니다.
import { migrate } from "drizzle-orm/bun-sqlite/migrator";
import { drizzle } from "drizzle-orm/bun-sqlite";
import { Database } from "bun:sqlite";
const sqlite = new Database("sqlite.db");
const db = drizzle(sqlite);
migrate(db, { migrationsFolder: "./drizzle" });이 스크립트를 bun 으로 실행하여 마이그레이션을 실행할 수 있습니다.
bun run migrate.ts이제 데이터베이스가有了 스키마와 일부 샘플 데이터를 갖췄습니다. Drizzle 을 사용하여 쿼리해 보겠습니다. index.ts 의 내용을 다음으로 대체하세요.
import * as schema from "./schema";
import { db } from "./db";
const result = await db.select().from(schema.movies);
console.log(result);그런 다음 파일을 실행하세요. 삽입한 세 개의 영화가 표시되어야 합니다.
bun run index.ts[
{
id: 1,
title: "The Matrix",
releaseYear: 1999
}, {
id: 2,
title: "The Matrix Reloaded",
releaseYear: 2003
}, {
id: 3,
title: "The Matrix Revolutions",
releaseYear: 2003
}
]전체 문서는 Drizzle 웹사이트 를 참조하세요.