Drizzle ORM과 Drizzle Kit v1.0.0-beta.2 릴리스
Feb 12, 2025

이 버전에서 많은 변경사항이 도입되었으며, 일부 기능이 동작하지 않을 수 있습니다. 문제가 발생하면 1.0.0-beta.1 또는 0.44.7 버전으로 다운그레이드할 수 있으며, GitHub나 Discord에 이슈를 제보해 주세요!

1.0.0-beta.1 릴리스 노트도 함께 확인하세요: https://github.com/drizzle-team/drizzle-orm/blob/beta/changelogs/drizzle-orm/1.0.0-beta.1.md

RQBv1에서 RQBv2로의 마이그레이션 가이드를 확인하세요: https://orm.drizzle.team/docs/relations-v1-v2

새로운 RQBv2 스키마 문서를 확인하세요: https://orm.drizzle.team/docs/relations-v2

새로운 RQBv2 쿼리 문서를 확인하세요: https://orm.drizzle.team/docs/rqb-v2

새로운 기능

MSSQL dialect

Drizzle이 이제 drizzle-orm, drizzle-kit, drizzle-seed 패키지에서 MSSQL을 지원합니다. 대부분의 컬럼, 쿼리 빌더 기능, 마이그레이션 전략 등을 지원합니다.

아직 지원되지 않는 기능은 RQBv2입니다.

// Make sure to install the 'mssql' package 
import { drizzle } from 'drizzle-orm/node-mssql';

const db = drizzle(process.env.DATABASE_URL);
 
const result = await db.execute('select 1');
// Make sure to install the 'pg' package 
import { drizzle } from 'drizzle-orm/node-mssql';

// You can specify any property from the mssql connection options
const db = drizzle({ 
  connection: { 
    connectionString: process.env.DATABASE_URL,
    ssl: true
  }
});
 
const result = await db.execute('select 1');

CockroachDB dialect

Drizzle이 이제 drizzle-orm, drizzle-kit, drizzle-seed 패키지에서 CockroachDB를 지원합니다. 대부분의 컬럼, 쿼리 빌더 기능, 마이그레이션 전략 등을 지원합니다.

아직 지원되지 않는 기능은 RQBv2입니다.

// Make sure to install the 'pg' package 
import { drizzle } from 'drizzle-orm/cockroach';

const db = drizzle(process.env.DATABASE_URL);
 
const result = await db.execute('select 1');
// Make sure to install the 'pg' package 
import { drizzle } from 'drizzle-orm/cockroach';

// You can specify any property from the node-postgres connection options
const db = drizzle({ 
  connection: { 
    connectionString: process.env.DATABASE_URL,
    ssl: true
  }
});
 
const result = await db.execute('select 1');

관계형 쿼리 파트

관계 설정을 여러 부분으로 분리해야 하는 경우 defineRelationsPart 헬퍼를 사용할 수 있습니다.

import { defineRelations, defineRelationsPart } from 'drizzle-orm';
import * as schema from "./schema";
export const relations = defineRelations(schema, (r) => ({
  users: {
    invitee: r.one.users({
      from: r.users.invitedBy,
      to: r.users.id,
    }),
    posts: r.many.posts(),
  }
}));
export const part = defineRelationsPart(schema, (r) => ({
  posts: {
    author: r.one.users({
      from: r.posts.authorId,
      to: r.users.id,
    }),
  }
}));

그런 다음 db 인스턴스에 제공할 수 있습니다.

const db = drizzle(process.env.DB_URL, { relations: { ...relations, ...part } })

폴더 v3 마이그레이션

관련 논의: https://github.com/drizzle-team/drizzle-orm/discussions/2832

마이그레이션 폴더 구조를 다음과 같이 업데이트했습니다:

이러한 변경사항은 journal 파일과의 잠재적인 Git 충돌을 제거하고 충돌된 마이그레이션을 삭제하거나 수정하는 프로세스를 단순화합니다.

향후 베타 릴리스에서는 팀 마이그레이션 충돌을 안내하고, 가능한 충돌을 감지하며, 해결 방법을 제안하는 교환법칙 검사 기능을 도입할 예정입니다.

교환법칙 논의: https://github.com/drizzle-team/drizzle-orm/discussions/5005

이전 폴더를 새로운 형식으로 마이그레이션하려면 다음을 실행해야 합니다.

drizzle-kit up

전체 drizzle-kit 재작성

주요 kit 및 마이그레이션 이슈를 해결하기 위한 아키텍처 재작성입니다. 더 빠른 반복 개발, 테스트 커버리지 개선, 전반적인 안정성 향상을 위한 가치 있고 필요한 업데이트를 완료했습니다.

완료된 작업 요약:

drizzle-kit pull --init 추가

이 플래그는 데이터베이스에 drizzle 마이그레이션 테이블을 생성하고 첫 번째 pull된 마이그레이션을 적용된 것으로 표시하므로, 거기서부터 계속 반복할 수 있습니다.

schemaFilter 동작 업데이트

drizzle-kit은 코드에 정의된 모든 스키마를 관리하기 시작합니다. 필터링하려면 schemaFilter를 사용할 수 있습니다. 이전에는 schemaFilter에 명시적으로 더 많은 스키마를 추가하지 않는 한 public 스키마만 관리되었습니다.

이제 glob 패턴도 지원하므로 원하는 방식으로 스키마를 필터링할 수 있습니다.

.enableRLS() 지원 중단

이전에는 RLS가 활성화된 PostgreSQL 테이블을 표시하려면 다음과 같이 해야 했습니다:

// 이전 구문
pgTable('name', {}).enableRLS()

이 옵션을 다른 위치로 이동했습니다:

pgTable.withRLS('users', {});

컬럼에 직접 별칭 지정

이제 간단한 방법으로 컬럼에 as 별칭을 추가할 수 있습니다:

const query = db
	.select({ age: users.age.as('ageOfUser'), id: users.id.as('userId') })
	.from(users)
	.orderBy(asc(users.id.as('userId')));

MySQL 새 컬럼 타입

몇 가지 MySQL 컬럼 타입을 추가했습니다:

추가 업데이트 및 수정사항

버그 수정

이 목록은 완전하지 않으며, 일부 이슈만 처리할 시간이 있었습니다. 이 목록은 향후 몇 주 동안 업데이트될 예정입니다.