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
آخر نشاط في المصدر
٧ مايو ٢٠٢٦ في ١٤:٠٦
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
١١
التفرعات
٢

خيارات التثبيت

يُحدَّد 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