SuperAPI AI 工具集

prisma-next-contract

数据与分析

查看项目

更新于 10-16 03:48

技能介绍

用途:编辑 Prisma Next 数据合同。合同是数据层唯一事实来源,用户编辑 contract.prisma(PSL)或 contract.ts(TypeScript builder),框架据此派生类型、迁移与运行时配置。每次编辑后由 agent 运行 prisma-next contract emit(或安装 Vite 插件在保存时触发),在源文件旁生成两个产物:contract.json(内容哈希的 Contract IR)和 contract.d.ts(TS 类型)。两者均为产物,只改源文件。

主要能力:增删改模型、字段、关系(@relation 只在拥有方声明,反向引用自动派生);添加索引、唯一约束、枚举、值对象;添加命名空间(Postgres schema)或跨合同外键;设置 @@control 或 defaultControlPolicy;使用扩展自定义类型(如 pgvector.Vector(length: 1536)、cipherstash.EncryptedString({...}));通过 prisma-next.config.ts 的 extensions: [...] 安装配置扩展;在 PSL 与 TS builder 之间迁移。

用法:先读 prisma-next.config.ts 中的 contract 字段定位源文件。PSL 方式直接写 model;TS builder 用 defineContract({...}, ({ field, model, rel, type }) => ({...}))。扩展需在配置的 extensions 数组(control 描述符)以及 TS builder 的 extensions 记录(pack 描述符)中注册。@@index 支持 expression、where、unique、type/options、name 或 map;表达式索引必须指定 name 或 map。Mongo 无 schema 层,多态需在 TS builder 中显式建模。

诊断:emit 返回结构化错误码。PN-CLI-4002 表示配置缺 contract;PN-CLI-4003 表示合同校验失败,需查 meta.diagnostics/meta.issues;PN-CLI-4011 表示缺少扩展包,meta.missingExtensions 列出缺项。

限制:不用于应用变更到数据库(见 prisma-next-migrations)、编写查询(prisma-next-queries)、接线 db.ts(prisma-next-runtime)、Vite 集成(prisma-next-build)、首次安装(prisma-next-quickstart)或提交缺失功能请求(prisma-next-feedback)。用户代码只应导入 @prisma-next/<target> façade,禁止直接访问 @prisma-next/cli/、family-、target-、adapter-、driver-、sql-contract-。SQL 解释器拒绝标量列表和隐式多对多,需用连接模型。默认级联为 Restrict,需显式指定 onDelete/onUpdate。其余细节暂未提供。