DB マイグレーションを作成する。「テーブルを追加して」「カラムを追加して」「スキーマを変更して」などの指示で使用。
$ARGUMENTS に対する Drizzle スキーマ定義とマイグレーションを以下の手順で生成する。
src/db/schema/$ARGUMENTS.ts # スキーマ定義
src/db/schema/index.ts # re-export に追加
drizzle/XXXX_migration_name.sql # 自動生成(手動編集不可)
import { pgTable, uuid, varchar, boolean, timestamp, index, uniqueIndex } from 'drizzle-orm/pg-core';
import { relations } from 'drizzle-orm';
import type { InferSelectModel, InferInsertModel } from 'drizzle-orm';
// --- テーブル定義 ---
export const $ARGUMENTS = pgTable('$ARGUMENTS', {
id: uuid('id').defaultRandom().primaryKey(),
// TODO: $ARGUMENTS のカラムを定義
// name: varchar('name', { length: 100 }).notNull(),
createdAt: timestamp('created_at', { withTimezone: true }).defaultNow().notNull(),
updatedAt: timestamp('updated_at', { withTimezone: true }).defaultNow().notNull(),
}, (table) => [
// TODO: 必要なインデックスを定義
// index('${ARGUMENTS}_name_idx').on(table.name),
]);
// --- リレーション ---
// export const ${ARGUMENTS}Relations = relations($ARGUMENTS, ({ one, many }) => ({
// // TODO: リレーションを定義
// }));
// --- 型定義 ---
export type ${ARGUMENTS^} = InferSelectModel<typeof $ARGUMENTS>;
export type New${ARGUMENTS^} = InferInsertModel<typeof $ARGUMENTS>;
src/db/schema/$ARGUMENTS.ts にスキーマを定義するsrc/db/schema/index.ts に re-export を追加する
export * from './$ARGUMENTS';
pnpm db:generate
drizzle/ ディレクトリ内の最新ファイル)pnpm db:migrate
pnpm db:studio
カラム削除、型変更、NOT NULL 追加などの破壊的変更は段階的に行う:
id, created_at, updated_at が含まれている_id サフィックスが付いているsrc/db/schema/index.ts に re-export を追加したInferSelectModel / InferInsertModel で型を導出したpnpm db:generate でマイグレーションを生成したpnpm db:migrate でマイグレーションを適用した