用途
add-entity 是一个面向 Activepieces 项目的开发技能,用于在需要创建新的数据库表、实体或数据模型时提供标准化的操作指引。根据其描述,该技能应在任何新的 TypeORM EntitySchema 创建场景中始终使用。
主要能力
该技能以步骤清单的形式,指导开发者完成新增数据库实体的完整流程,包括:
- 读取参考模式:打开 packages/server/api/src/app/tables/table/table.entity.ts 作为参考。
- 创建实体文件:在 packages/server/api/src/app/{module}/{name}.entity.ts 路径下创建实体文件。
- 注册实体:在 packages/server/api/src/app/database/database-connection.ts 中导入并添加到 getEntities() 数组。
- 创建迁移:按命名规则创建迁移文件,并在 packages/server/api/src/app/database/postgres-connection.ts 中导入并加入 getMigrations() 数组。
- 创建仓库:使用 repoFactory(MyEntity) 创建仓库。
- 验证:运行 npm run lint-dev。
使用方式
该技能通过 $ARGUMENTS 接收要创建的实体名称,并按照既定步骤执行。具体规范包括:
- 使用 EntitySchema,而非装饰器。
- 包含 ...BaseColumnSchemaPart(id、created、updated)。
- 外键列使用 ApIdSchema,格式为 { ...ApIdSchema, nullable: false }。
- 添加 projectId 列以及与 project 的关系(CASCADE 删除)。
- 在所有连接列上添加 foreignKeyConstraintName。
- 数组列格式为 { type: String, array: true, nullable: false }。
- 实体必须在 database-connection.ts 的 getEntities() 数组中注册,这是必需步骤,因为 TypeORM 不会自动发现。
- 迁移命名格式为 {Timestamp}{PascalCaseDescription},例如 AddMyFeature1774500000000。
- 迁移需在 postgres-connection.ts 中导入并按时间顺序加入 getMigrations() 数组。
- PGlite 环境下使用 CREATE INDEX(而非 CONCURRENTLY);若使用 CONCURRENTLY,需设置 transaction = false。
- 仓库创建方式为 const myRepo = repoFactory(MyEntity),调用时使用 myRepo() 或 myRepo(entityManager) 以支持事务。
适用场景
适用于 Activepieces 项目中需要新增数据库表、实体或数据模型的开发场景,特别是任何新的 TypeORM EntitySchema 创建。
限制
资料中未提供关于该技能的其他限制、收费、价格、平台或效果信息。