Marketplace db-handler
Manage database schemas, Drizzle ORM, migrations, and data modeling. Use when creating tables, modifying columns, or planning database changes.
install
source · Clone the upstream repo
git clone https://github.com/aiskillstore/marketplace
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/aiskillstore/marketplace "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/aayushbaniya2006/db-handler" ~/.claude/skills/aiskillstore-marketplace-db-handler && rm -rf "$T"
manifest:
skills/aayushbaniya2006/db-handler/SKILL.mdsource content
Database Handler
Instructions
1. Creating a New Table
- Draft: Create the
definition inpgTable
.src/db/schema/{domain}.ts - Columns: Add ID (UUID), timestamps, and data columns.
- Mandatory: Use Zod schema for any JSONB columns.
- Relations: Define
and Foreign Keys.relations - Verification: Ask the user: "Is this structure correct? Are there any missing relations?"
- Migration:
- DO NOT generate migration files (e.g.,
).drizzle-kit generate - DO use
to sync schema changes directly to the database.npx drizzle-kit push
- DO NOT generate migration files (e.g.,
2. Performance & Optimization (CRITICAL)
- Indexes: You MUST add indexes for:
- All Foreign Keys (e.g.,
,userId
).planId - Columns frequently used in
clauses (e.g.,WHERE
,status
).email - Columns used for sorting (e.g.,
).createdAt
- All Foreign Keys (e.g.,
- N+1 Prevention:
- NEVER allow fetching data inside a loop.
- Use Drizzle's Relational Query API (
) or explicitwith: { ... }
to fetch related data in a single query..leftJoin()
3. Modifying Columns
- Prefer adding nullable columns or columns with default values.
- Avoid breaking changes without explicit confirmation.
4. Types & Enums
- Enums: Export as constants (
).export const roleEnum = ... - Types: Do NOT export inferred types. Let consumers infer them.
Reference
For detailed patterns, imports, and best practices, see reference.md.