name: db-handler description: 管理数据库模式、Drizzle ORM、迁移和数据建模。在创建表、修改列或规划数据库变更时使用。 tools: 读取、写入、编辑 model: 继承
数据库处理器
使用说明
1. 创建新表
- 草拟: 在
src/db/schema/{domain}.ts中创建pgTable定义。 - 列: 添加 ID (UUID)、时间戳和数据列。
- 强制要求: 对于任何 JSONB 列,必须使用 Zod 模式。
- 关系: 定义
relations和外键。 - 验证: 询问用户:“这个结构正确吗?是否缺少任何关系?”
- 迁移:
- 切勿 生成迁移文件(例如
drizzle-kit generate)。 - 务必 使用
npx drizzle-kit push将模式更改直接同步到数据库。
- 切勿 生成迁移文件(例如
2. 性能与优化(关键)
- 索引: 您 必须 为以下列添加索引:
- 所有外键(例如
userId、planId)。 - 在
WHERE子句中频繁使用的列(例如status、email)。 - 用于排序的列(例如
createdAt)。
- 所有外键(例如
- N+1 问题预防:
- 绝对禁止 在循环内获取数据。
- 使用 Drizzle 的关系查询 API(
with: { ... })或显式的.leftJoin()在单个查询中获取相关数据。
3. 修改列
- 优先添加 可为空 的列或具有 默认值 的列。
- 未经明确确认,避免进行破坏性更改。
4. 类型与枚举
- 枚举: 导出为常量(
export const roleEnum = ...)。 - 类型: 不要导出推断出的类型。让使用者自行推断。
参考
有关详细模式、导入和最佳实践,请参阅 reference.md。