- パッケージインストール
bun add drizzle-orm
bun add -D drizzle-kit @types/bun- D1にデータベースを作成
bun run wrangler d1 create todo- D1のセットアップウィザードに応答
✔ Would you like Wrangler to add it on your behalf? … yes
→ wrangler.jsonc に設定値を追記するか
✔ What binding name would you like to use? … todo
→ バインディング名はどうするか
✔ For local dev, do you want to connect to the remote resource instead of a local resource? … no
→ ローカル開発時に、ローカルのD1ではなく、リモートのD1に接続するか- バインディングの型定義を更新
bun run cf-typegen- Cloudflare の認証情報を .dev.vars ファイルに追記
CLOUDFLARE_ACCOUNT_ID='CloudflareのアカウントID'
CLOUDFLARE_DATABASE_ID='wrangler.jsoncファイルに設定したdatabase_idと同じ値'
CLOUDFLARE_D1_TOKEN='Cloudflareダッシュボードで発行したAPIトークン'
- drizzle.config.ts ファイルを作成
プロジェクトのルートディレクトリに drizzle.config.ts ファイルを作成する
- tsconfig.json を編集する
compilerOptions > types に "bun" を追記(process.envの型定義エラーを解消するため)
"types": [
"./worker-configuration.d.ts",
+ "bun"
]- wrangler.jsonc を編集
drizzle.config.ts の out に合わせる
- スキーマファイルを作成
drizzle.config.ts の schema に記載のスキーマファイルを編集する
- マイグレーションファイルを生成
bun run drizzle-kit generate- マイグレーションを適用
bun run wrangler d1 migrations apply todo --local
bun run wrangler d1 migrations apply todo --remote- シードファイルを作成
src > db > seed.sql
- シードを適用
bun run wrangler d1 execute todo --local --file=./src/db/seed.sql
bun run wrangler d1 execute todo --remote --file=./src/db/seed.sql- テーブルを確認
- 開発環境: VScode拡張機能の
database clientでローカルのd1(.wrangler/state/v3/d1/miniflare-D1DatabaseObject/xxx.sqlite)をフルパスで開く - 本番環境:
drizzle-kit studioで確認 or cloudflare d1の管理者コンソールから確認
- マイグレーションファイルを生成し直す(
bun run dz:generate) - マイグレーションの適用を行う(
bun run db:migrate:local&bun run db:migrate:remote) - シードファイルを更新する