Drizzle ORMアダプター
リソース
セットアップ
インストール
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はシンプルなクイックスタートガイドを提供しています。詳細については、それぞれのデータベース(PostgreSQL、MySQL、またはSQLite)のDrizzleドキュメントに従ってください。要約すると、セットアップは以下のようになります。
- 以下のいずれかを基に、スキーマファイルを作成します。
@libsql/client
、mysql2
、postgres
など、サポートされているデータベースドライバーをプロジェクトにインストールします。drizzle.config.ts
ファイルを作成します。drizzle-kit generate:pg
などのコマンドを使用して、スキーマファイルから初期マイグレーションを生成します。migrate()
関数を使用してマイグレーションを適用するか、drizzle-kit push:pg
などのコマンドを使用して変更をデータベースに直接プッシュします。- スキーマがデフォルトのものと異なる場合は、アダプターの2番目のパラメーターとして渡します。
スキーマ
アダプターのセットアップ
./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
に2番目の引数として渡すことができます。
sessionsTable
はオプションで、データベースセッション戦略を使用している場合にのみ必要です。verificationTokensTable
はオプションで、マジックリンクプロバイダーを使用している場合にのみ必要です。
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"
// This will run migrations on the database, skipping the ones already applied
await migrate(db, { migrationsFolder: "./drizzle" })
// Don't forget to close the connection, otherwise the script will hang
await connection.end()
Drizzleでマイグレーションを管理する方法の完全なドキュメントは、Drizzle Kitのマイグレーションページにあります。