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에서 보기