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.

Zur Installation springen

Quellinformationen

Repository
recca0120/code-quest
Letzte Quellaktivität
7. Mai 2026 um 14:06
Erkannte Sprache von SKILL.md
Englisch
Sterne
11
Forks
2

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
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) ```
Auf GitHub ansehen