Drizzle ORM Adapter
리소스
설정
설치
npm install drizzle-orm @auth/drizzle-adapter
npm install drizzle-kit --save-dev
환경 변수
AUTH_DRIZZLE_URL=postgres://postgres:postgres@127.0.0.1:5432/db
설정
이 어댑터를 사용하려면 프로젝트에 Drizzle ORM과 Drizzle Kit을 설정해야 합니다. Drizzle은 간단한 빠른 시작 가이드를 제공합니다. 더 자세한 내용은 사용 중인 데이터베이스에 맞는 Drizzle 문서(PostgreSQL, MySQL, SQLite)를 참고하세요. 요약하면, 설정은 다음과 같은 과정으로 진행됩니다.
- 아래 예제 중 하나를 기반으로 스키마 파일을 생성합니다.
- 프로젝트에 지원되는 데이터베이스 드라이버를 설치합니다. 예를 들어
@libsql/client
,mysql2
,postgres
등을 사용할 수 있습니다. drizzle.config.ts
파일을 생성합니다.- 스키마 파일을 기반으로 초기 마이그레이션을 생성합니다.
drizzle-kit generate
와 같은 커맨드를 사용합니다. migrate()
함수를 사용하거나drizzle-kit push
와 같은 커맨드로 데이터베이스에 변경 사항을 직접 적용합니다.- 스키마가 기본값과 다를 경우, 어댑터의 두 번째 매개변수로 스키마를 전달합니다.
스키마
어댑터 설정
./auth.ts
import NextAuth from "next-auth"
import { DrizzleAdapter } from "@auth/drizzle-adapter"
import { db } from "./schema.ts"
export const { handlers, auth, signIn, signOut } = NextAuth({
adapter: DrizzleAdapter(db),
providers: [],
})
커스텀 스키마 사용하기
여러분이 직접 만든 테이블을 사용하고 싶다면, DrizzleAdapter
의 두 번째 인자로 전달할 수 있습니다.
sessionsTable
은 선택 사항이며, 데이터베이스 세션 전략을 사용할 때만 필요합니다.verificationTokensTable
도 선택 사항이며, Magic Link 프로바이더를 사용할 때만 필요합니다.
auth.ts
import NextAuth from "next-auth"
import Google from "next-auth/providers/google"
import { DrizzleAdapter } from "@auth/drizzle-adapter"
import { db, accounts, sessions, users, verificationTokens } from "./schema"
export const { handlers, auth } = NextAuth({
adapter: DrizzleAdapter(db, {
usersTable: users,
accountsTable: accounts,
sessionsTable: sessions,
verificationTokensTable: verificationTokens,
}),
providers: [Google],
})
데이터베이스 마이그레이션
코드에 스키마를 정의했다면, 이제 데이터베이스를 해당 스키마로 마이그레이션해야 합니다. 예시로 migrate.ts
파일은 다음과 같이 작성할 수 있습니다. 더 자세한 정보는 Drizzle의 마이그레이션 퀵 스타트 가이드를 참고하세요.
migrate.ts
import "dotenv/config"
import { migrate } from "drizzle-orm/mysql2/migrator"
import { db, connection } from "./db"
// 이미 적용된 마이그레이션은 건너뛰고 데이터베이스에 마이그레이션을 실행합니다.
await migrate(db, { migrationsFolder: "./drizzle" })
// 연결을 닫는 것을 잊지 마세요. 그렇지 않으면 스크립트가 멈춥니다.
await connection.end()
Drizzle을 사용하여 마이그레이션을 관리하는 방법에 대한 전체 문서는 Drizzle Kit의 마이그레이션 페이지에서 확인할 수 있습니다.