DrizzleORM v0.29.4 릴리스
Feb 22, 2024

새로운 기능

🎉 Neon HTTP Batch

자세한 정보는 Neon 문서Neon과 Drizzle 시작하기를 확인하세요.

import { neon } from '@neondatabase/serverless';
import { drizzle } from 'drizzle-orm/neon-http';
import { usersTable } from './schema';

const sql = neon(process.env.DRIZZLE_DATABASE_URL!);
const db = drizzle(sql);

const batchResponse: BatchType = await db.batch([
	db.insert(usersTable).values({ id: 1, name: 'John' }).returning({
		id: usersTable.id,
	}),
	db.insert(usersTable).values({ id: 2, name: 'Dan' }),
	db.query.usersTable.findMany({}),
	db.query.usersTable.findFirst({}),
]);
type BatchType = [
	{
		id: number;
	}[],
	NeonHttpQueryResult<never>,
	{
		id: number;
		name: string;
		verified: number;
		invitedBy: number | null;
	}[],
	{
		id: number;
		name: string;
		verified: number;
		invitedBy: number | null;
	} | undefined,
];

개선 사항

database-jsPlanetScale 팀의 도움으로 database-js의 기본 동작과 인스턴스가 업데이트되었습니다.

database-js 핵심 팀의 제안에 따라 connect() 대신 Client 인스턴스를 사용해야 합니다:

import { Client } from '@planetscale/database';
import { drizzle } from 'drizzle-orm/planetscale-serverless';

// create the connection
const client = new Client({
	host: process.env['DATABASE_HOST'],
	username: process.env['DATABASE_USERNAME'],
	password: process.env['DATABASE_PASSWORD'],
});

const db = drizzle(client);

주의: 이 버전에서는 Breaking Change가 없지만, 0.30.0 버전부터는 Client 인스턴스가 아닌 다른 것을 사용하려고 하면 오류가 발생합니다.

향후 런타임 오류를 방지하기 위해 지금부터 PlanetScale 연결을 변경하는 것을 권장합니다.

이전 문서에서는 connect()를 사용하도록 안내했고, 이 함수만 drizzle에 전달할 수 있었습니다. 이번 릴리스에서는 database-js 팀의 제안에 따라 new Client() 지원을 추가하고 connect()를 더 이상 사용하지 않도록(deprecated) 합니다. 이 릴리스에서는 connect() 함수 결과를 전달하려고 할 때 warning이 표시됩니다:

경고 텍스트

Warning: You need to pass an instance of Client:

import { Client } from "@planetscale/database";

const client = new Client({
  host: process.env["DATABASE_HOST"],
  username: process.env["DATABASE_USERNAME"],
  password: process.env["DATABASE_PASSWORD"],
});

const db = drizzle(client);

Starting from version 0.30.0, you will encounter an error if you attempt to use anything other than a Client instance.

Please make the necessary changes now to prevent any runtime errors in the future