Prisma용 Drizzle 확장

Prisma를 사용하는 기존 프로젝트에서 Drizzle을 시도하거나 점진적으로 도입하고 싶다면, Prisma 클라이언트에 Drizzle API를 추가하는 일급 확장을 사용할 수 있습니다. 이를 통해 기존 DB 연결을 재사용하면서 Prisma 쿼리와 함께 Drizzle을 사용할 수 있습니다.

사용법

의존성 설치

Drizzle 자체와 Prisma 스키마로부터 Drizzle 스키마를 생성하는 제너레이터 패키지를 설치해야 합니다.

npm
yarn
pnpm
bun
npm i drizzle-orm@latest
npm i -D drizzle-prisma-generator

Prisma 스키마 업데이트

Prisma 스키마에 Drizzle 제너레이터를 추가합니다. output은 생성된 Drizzle 스키마 TS 파일이 저장될 경로입니다.

schema.prisma
generator client {
  provider = "prisma-client-js"
}

generator drizzle {
  provider = "drizzle-prisma-generator"
  output   = "./drizzle" // 생성된 Drizzle 테이블이 저장될 위치
}

// Prisma 스키마의 나머지 부분

datasource db {
  provider = "postgresql"
  url      = env("DB_URL")
}

model User {
  id    Int     @id @default(autoincrement())
  email String  @unique
  name  String?
}

...

Drizzle 스키마 생성

prisma generate

Prisma 클라이언트에 Drizzle 확장 추가

PostgreSQL
MySQL
SQLite
import { PrismaClient } from '@prisma/client';
import { drizzle } from 'drizzle-orm/prisma/pg';

const prisma = new PrismaClient().$extends(drizzle());

prisma.$drizzle를 통해 Drizzle 쿼리 실행 ✨

Drizzle 쿼리 빌더를 사용하려면 Drizzle 테이블에 대한 참조가 필요합니다. 제너레이터 설정에서 지정한 output 경로에서 이를 가져올 수 있습니다.

import { User } from './drizzle';

await prisma.$drizzle.insert().into(User).values({ email: 'sorenbs@drizzle.team', name: 'Søren' });
const users = await prisma.$drizzle.select().from(User);

제한사항