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.

Aller à l'installation

Informations de source

Dépôt
recca0120/code-quest
Dernière activité de la source
7 mai 2026 à 14:06
Langue détectée de SKILL.md
anglais
Étoiles
11
Forks
2

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
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) ```
Voir sur GitHub