SuperAPI AI 工具集

drizzle-orm-rules

编程与开发

查看项目

更新于 10-16 07:24

技能介绍

这是一个约束 Drizzle ORM 使用方式的规则技能,目标是在模式设计、查询、迁移和关系定义上保持类型安全与生产可用。

用途:为使用 Drizzle ORM 的项目提供统一规范,覆盖 PostgreSQL 表设计、索引、查询与迁移工作流。

主要能力与规则: 主键用 integer('id').primaryKey().generatedAlwaysAsIdentity(),不用 serial()。 时间戳列可抽成可复用对象,如 createdAt 与 updatedAt,后者用 $onUpdateFn(() => new Date())。 有界字符串用 varchar(name, { length: N }),必须非空的列加 .notNull()。 PostgreSQL 的 JSON 存储用 jsonb() 而非 json()。 索引写在 pgTable 第二个参数回调里,如 (table) => [index('name').on(table.col)];组合索引注意列顺序;唯一约束用 uniqueIndex();全文检索可用 .withSearchIndex 或原生 SQL 迁移建 GIN 索引。 查询上,嵌套关联优先用 db.query.<table>.findFirst/findMany({ with: { relation: true } });扁平查询用 db.select().from(table).where(eq(table.col, val));操作符(eq、and、or、gt、lt、like、inArray、isNull)必须从 drizzle-orm 导入;多步写入用 db.transaction(async (tx) => {...});避免 N+1。 迁移:本地开发可用 drizzle-kit push,但绝不能用于生产或共享环境;生产与团队流程用 drizzle-kit generate 再 drizzle-kit migrate;已有数据库先用 drizzle-kit pull。迁移文件放在 drizzle/ 目录并提交版本控制,已应用的迁移文件不得删除或重排。 关系:在 schema.ts 中与表定义并列定义 relations(),一对多用 many(),多对一用 one();外键与 relations() 定义是两件事,关系查询 API 需要两者齐全。

适用场景:使用 Drizzle ORM 与 PostgreSQL 的项目,尤其是团队协作、需要审计化迁移流程的场景。

限制:资料未提供该技能的具体安装命令、平台支持范围、收费情况与效果数据;内容针对 PostgreSQL 特性,其他数据库行为暂未提供说明。