Skip to main content

drizzle-orm

Drizzle ORM and drizzle-kit patterns for multi-dialect setup (SQLite + MySQL). Use when creating or modifying DB schemas, writing migrations, implementing repositories, adding tables or relations, or writing database tests.

跳到安装

来源信息

仓库
recca0120/code-quest
最近来源活动
2026年5月7日 14:06
检测到的 SKILL.md 语言
英语
星标
11
分支
2

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
drizzle-orm
description
Drizzle ORM and drizzle-kit patterns for multi-dialect setup (SQLite + MySQL). Use when creating or modifying DB schemas, writing migrations, implementing repositories, adding tables or relations, or writing database tests.
# Drizzle ORM ## File Structure ``` apps/server/ ├── src/db/ │ ├── schema-sqlite.ts # sqliteTable() definitions │ ├── schema-mysql.ts # mysqlTable() definitions │ ├── schema-columns.ts # Shared column name constants │ ├── sqlite-client.ts # drizzle(better-sqlite3) factory │ └── mysql-client.ts # drizzle(mysql2) factory ├── src/services/ │ ├── drizzle-session-store.ts # Session CRUD │ ├── drizzle-raw-store.ts # Raw event append/query │ ├── composite-raw-store.ts # Multi-backend wrapper │ └── composite-session-store.ts ├── src/scripts/ │ ├── migrate-sqlite.ts │ └── migrate-mysql.ts ├── drizzle-sqlite.config.ts ├── drizzle-mysql.config.ts └── drizzle/ ├── sqlite/ # 10 migration files └── mysql/ # 10 migration files ``` ## Schema Pattern Both dialects share column names via `schema-columns.ts`: ```typescript // schema-columns.ts export const SESSION_COLUMNS = { id, provider, command, args, cwd, mode, role, parentId, sessionId, title, status, createdAt }; export const RAW_ENTRY_COLUMNS = { id, sessionId, promptId, dir, raw, seq, createdAt }; ``` Schema consistency is verified by `src/__tests__/schema-consistency.test.ts` using `getTableColumns()`. ## Connection Setup **SQLite** (`sqlite-client.ts`): `drizzle(new Database(path), { schema })` — WAL mode + foreign keys enabled. **MySQL** (`mysql-client.ts`): `drizzle(mysql.createPool(url), { schema, mode: 'default' })`. ## Query Patterns ```typescript // Select with pagination db.select().from(sessions).where(ne(sessions.status, 'deleted')).orderBy(desc(sessions.createdAt)).limit(limit).offset(offset) // Insert db.insert(rawEntries).values({ sessionId, raw, seq, createdAt }) // Update db.update(sessions).set({ title }).where(eq(sessions.id, id)) // Delete db.delete(sessions).where(eq(sessions.id, id)) // Count db.select({ count: count() }).from(sessions) ``` Operators: `eq()`, `ne()`, `desc()`, `asc()`, `count()`. ## Migration Workflow ```bash pnpm db:generate:sqlite # drizzle-kit generate pnpm db:generate:mysql pnpm db:migrate:sqlite # Run migrations pnpm db:migrate:mysql pnpm db:studio:sqlite # Drizzle Studio ``` ## Testing In-memory SQLite with migrations: ```typescript const db = createDatabase(':memory:'); migrate(db, { migrationsFolder: 'drizzle/sqlite' }); ``` Test container (`src/test/create-test-container.ts`) provides DI container with pre-migrated in-memory DB. ## Dependencies ``` drizzle-orm: ^0.45.1, drizzle-zod: ^0.8.3, mysql2: ^3.17.4 better-sqlite3: ^12.6.2 (dev), drizzle-kit: ^0.31.9 (dev) ```
在 GitHub 查看