From database
Guides schema management and migrations using Drizzle ORM with SQLite in TypeScript projects. Edit schema.ts, generate migrations via pnpm db:generate, and apply safely on dev startup.
npx claudepluginhub sean-sunagaku/claude-code-plugin --plugin databaseThis skill uses the workspace's default tool permissions.
Drizzle ORM を使ったデータベーススキーマの管理とマイグレーションに関するガイド。
Builds type-safe database layers with Drizzle ORM in TypeScript: schema design, relational queries, migrations, and serverless integrations like Neon and Supabase.
Provisions Neon PostgreSQL database and sets up Drizzle ORM with dependencies, credentials, schemas, and migrations for immediate database connectivity and querying.
Provides Drizzle ORM patterns for schema definition, CRUD operations, relations, queries, transactions, and migrations. Supports PostgreSQL, MySQL, SQLite, MSSQL, CockroachDB.
Share bugs, ideas, or general feedback.
Drizzle ORM を使ったデータベーススキーマの管理とマイグレーションに関するガイド。
手動でマイグレーションSQLファイルを作成しない
drizzle/ ディレクトリに直接 .sql ファイルを作成してはいけないpnpm db:generate で自動生成する手動でDBを直接操作しない
sqlite3 コマンドで直接 ALTER TABLE などを実行しないdrizzle/meta/_journal.json を手動で編集しない
drizzle-kit が自動管理するファイルschema.ts から始めるpnpm db:generate で生成するpackages/server/src/db/schema.ts を編集する。
// 例: sessions テーブルに新しいカラムを追加
export const sessions = sqliteTable('sessions', {
id: text('id').primaryKey(),
// ... 既存のカラム
newColumn: text('new_column'), // 追加
});
cd packages/server
pnpm db:generate
これで drizzle/XXXX_<random_name>.sql が自動生成される。
開発環境では、サーバー起動時に自動適用される:
pnpm dev
または手動で適用:
pnpm db:migrate
サーバーを起動して、エラーがないことを確認。
packages/server/
├── drizzle.config.ts # Drizzle Kit 設定
├── drizzle/ # マイグレーションファイル (自動生成)
│ ├── 0000_init.sql
│ ├── 0001_xxx.sql
│ └── meta/ # マイグレーションメタデータ (自動管理)
│ ├── _journal.json
│ └── XXXX_snapshot.json
└── src/
└── db/
├── schema.ts # スキーマ定義 (これを編集)
└── index.ts # DB接続・マイグレーション実行
すべてのコマンドは packages/server ディレクトリから実行する。
| コマンド | 説明 |
|---|---|
pnpm db:generate | スキーマからマイグレーションファイルを自動生成 |
pnpm db:migrate | マイグレーションを適用 |
pnpm db:push | スキーマを直接DBに反映 (開発用のみ) |
pnpm db:studio | Drizzle Studio (DB GUI) を起動 |
アプリケーション起動時に initializeDatabase() が呼ばれ、未適用のマイグレーションが自動実行される。
// packages/server/src/db/index.ts
import { migrate } from 'drizzle-orm/better-sqlite3/migrator';
export function initializeDatabase(): void {
migrate(db, { migrationsFolder: './drizzle' });
}
drizzle/meta/_journal.json にエントリがあるか確認rm .brandize/brandize.db && pnpm devrm packages/server/.brandize/brandize.db
pnpm dev # 再起動で再作成
| テーブル | 説明 | 主要カラム |
|---|---|---|
projects | プロジェクト管理 | id, name, description, working_dir |
sessions | 会話セッション | id, project_id, title, type, topic |
messages | メッセージ履歴 | id, session_id, role, content |
logos | ロゴ生成履歴 | id, project_id, brand_name, svg |
worktrees | Git worktree 管理 | id, project_id, branch_name, path |
project_configs | プロジェクト設定 | id, project_id, brand_name, etc. |