用途:在 NestJS 服务端开发中,为指定实体快速生成基于 Drizzle ORM 的完整 CRUD 模块,减少重复的样板代码编写。
主要能力:生成功能模块、控制器、服务、Zod 校验的 DTO、Drizzle 表 schema 与 Jest 单元测试。控制器提供 POST、GET、PATCH、DELETE 完整 CRUD 端点,支持分页查询参数校验与 Zod 校验管道。服务层包含 Drizzle ORM 查询方法、基于 deletedAt 列的软删除、limit/offset 分页、过滤能力与类型安全返回类型。DTO 提供创建与更新的 Zod schema 及过滤查询参数 schema。测试使用模拟的 Drizzle 数据库,覆盖各 CRUD 操作。
使用方式:先确定实体名称与字段列表(字段名、类型、是否必填、默认值),再用命令运行生成器:python scripts/generate_crud.py --feature <name> --fields '<json-array>' --output <path>。随后检查生成目录 libs/server/<feature-name>/src/lib/ 下的 controllers、services、dto、schema 与 <feature>-feature.module.ts,再执行 cd libs/server && npx tsc --noEmit 做类型检查,并用 cd libs/server && npm test -- --testPathPattern=<feature-name> 运行单元测试。生成后需手动将模块接入应用:以 forRootAsync 方式导入 FeatureModule,并在 useFactory 中配置 defaultPageSize 与 maxPageSize。依赖包包括 @nestjs/common、@nestjs/core、drizzle-orm、drizzle-zod、zod、nestjs-zod。命令行传入字段 JSON 数组时需使用单引号包裹。
限制:删除操作仅实现软删除,硬删除需手动修改;生成代码不含认证守卫,需自行按安全需求添加;仅覆盖基础 CRUD,复杂查询、事务与业务逻辑需手动实现;生成的 Drizzle schema 需单独创建数据库迁移;提交前建议先运行类型检查与测试,并按 API 需求调整 Zod 校验规则。