请严格按照以下步骤进行:
-
列出功能实现清单:首先,基于 APIJSON 的核心特性和文档内容,生成一份详细的功能实现清单。该清单应将 Java 版本的核心模块(如 Parser, Verifier, SQLExecutor 等)映射到 NestJS 的模块、服务、控制器和拦截器。
-
功能实现:按照清单逐一实现功能。
- 核心解析器:实现一个能够解析 JSON 请求(如 {"User": {"id": 1}})并将其转换为 TypeORM QueryBuilder 的核心服务。
- 需要实现单表读取:
- 需要实现多表关联读取:
- 需要实现单表更新:
- 需要实现批量更新:
- 需要实现批量删除:
- 实现单表的创建
- 需要实现批量创建:
- 需要支持关联表的创建
- 需要实现单表删除:
- 需要支持关联表的删除
- 请求路由:利用 NestJS 的拦截器和装饰器来处理 get, gets, head, heads, post, put, delete 等 APIJSON 请求方法。
- 验证与权限:参考文档中的校验逻辑,结合 Redis 实现用户登录验证、角色权限控制和请求参数校验。
- 高级特性:实现文档中提到的 JOIN 查询、子查询、聚合函数、远程函数调用、事务管理等高级功能。
- 配置模块:创建灵活的配置模块,支持数据库连接、Redis 连接及 APIJSON 相关参数的动态配置。
- 日志模块:集成 Winston 或其他日志库,记录 API 请求和数据库操作日志。
- 错误处理:处理 API 请求中的错误,返回错误信息给客户端。
- 表操作管理权限模块:创建一个权限管理模块,管理用户对数据库表的操作权限。
- 核心解析器:实现一个能够解析 JSON 请求(如 {"User": {"id": 1}})并将其转换为 TypeORM QueryBuilder 的核心服务。
-
单元测试与 E2E测试:对于清单中的每一个功能模块,必须提供:
- 单元测试:使用 Jest 对核心解析逻辑、SQL 构建逻辑和验证逻辑进行单元测试。
- E2E 测试:使用 Supertest 编写端到端测试,模拟客户端发送 JSON 请求,验证 API 响应格式及数据库操作结果是否符合预期。
-
仅需要考虑mysql数据库的操作兼容性,无需实现其他数据库兼容逻辑
确保代码结构清晰,遵循 NestJS 最佳实践,并包含必要的注释以说明核心逻辑。