Commit Graph
2 Commits
Author SHA1 Message Date
zhangwenjian f7c223e0dc refactor🎨: move app/demo onto the generic actions
The five routes use actions.Index, View, Create, Update and Delete. The
control request's GenerateM becomes ToModel, returning the model type
itself, and the Generate methods on the model and the three request
types go, along with the tests that held them to returning copies:
nothing calls them any more.

Recorded before the change and replayed after it, the same 18 requests
- creates, lists with filters and paging, details, updates and deletes,
found and missing - get byte-identical responses.
2026-09-27 20:46:12 +08:00
zhangwenjian d1f5fe5681 feat✨: 新增 app/demo 标准 CRUD 参照模块
作为编码约定的可执行参照物:文档会滞后,而这个模块过时会导致构建或测试
失败,因此以它为准。

目录骨架与自动注册文件由项目自带的脚手架生成:

  go run main.go app -n demo

它同时产出 cmd/api/demo.go,其中的 init() 将路由追加进 AppRouters,
无需在任何中心文件手工登记。

模块本身演示了单表 CRUD 的推荐写法——直接使用 common/actions 提供的五个
通用 Action,因此只有 model、dto、router 三个业务文件,没有 apis 与
service。手写 Handler 的场景仅在业务超出单表 CRUD 时才需要。

DTO 中详情/删除入参内嵌 dto.ObjectById 以复用其 Bind 与 GetId,不重复
实现 uri 绑定与批量 ids 合并逻辑。

补充 8 项测试锁定通用 Action 的接口约束,其中最关键的是 Generate() 必须
返回副本——Action 在并发请求间复用实例,就地返回会串数据。反向验证:将
Generate 改为就地返回,测试立即失败。
2026-08-14 16:46:09 +08:00