SuperAPI AI 工具集

generating-typeorm-migration

编程与开发

查看项目

更新于 10-15 22:17

技能介绍

用途:指导在 TypeORM 项目中端到端创建数据库迁移,确保迁移生成正确、命名清晰,且不会被自动执行。

主要能力与流程:

  1. 更新实体:在 apps/api/src/core/<domain>/entities/ 或 libs/ 下修改 TypeORM 实体,用装饰器增改列、索引、关系等。默认使用生成的迁移,除非 TypeORM 无法表达目标数据库对象,否则不手写 SQL。
  2. 生成迁移:在项目根目录运行 npm run migration:api:generate --name=<migration-name>,名称会成为文件名的一部分:apps/api/src/database/migrations/<timestamp>-<migration-name>.ts。命名用 kebab-case,并遵循既有约定前缀,如 add-、remove-/delete-/drop-、create-、update-/rename-/replace-/normalize-、migrate-、new-。
  3. 处理 TypeORM 限制:若变更无法用实体元数据表达(如表达式索引 USING GIST (ST_Transform(geom, 2056))、自定义 SQL 函数或触发器、当前版本不支持的 Postgres 特性),不要用假列或变通方式强行塞进实体。应保持实体只作为真实列与关系的来源,在相关字段或实体级注释中说明自定义数据库对象、由哪个迁移创建、为何未通过 TypeORM 元数据声明,然后用 npm run migration:api:create --name=<migration-name> 创建迁移并手写最小 up()/down() SQL。
  4. 审查生成文件:确认 up() 只含预期变更、down() 能正确回滚、未触碰无关表或列;若差异异常,检查是否有其他实体的未保存改动被误纳入。手写迁移同样按此审查。
  5. 到此为止,不要运行迁移:绝不自动执行 npm run migration:api:run,也不要建议或“仅为测试”而运行;只保留生成文件并告知用户迁移已就绪,由开发者自行选择时机执行。

常用命令:npm run migration:api:generate --name=<name> 从实体变更生成迁移;npm run migration:api:create --name=<name> 创建空迁移用于自定义 SQL;npm run migration:api:show 列出已应用/待执行迁移;npm run migration:api:run 仅手动运行,绝不自动化;npm run migration:api:revert 回滚上一个迁移。

关键路径:实体位于 apps/api/src/core/<domain>/entities/ 或 libs/domains/;迁移位于 apps/api/src/database/migrations/;TypeORM 配置位于 apps/api/src/config/typeorm.config.ts。

限制:资料未提供具体项目版本、依赖安装方式及更多平台信息。