SuperAPI AI 工具集

go-create-usecase

编程与开发

查看项目

更新于 10-15 20:29

技能介绍

用途:在 Go 模块化架构中生成业务用例(UseCase),让用例只依赖 ports 接口而非具体实现,业务逻辑集中在用例内,持久化留在仓储层。

主要能力与约定:每个操作生成一个文件 internal/modules/<module>/usecase/<operation>_usecase.go,包名 usecase;结构体为 <Operation>UseCase,构造函数 New<Operation>UseCase,公开方法 Execute;输入输出 DTO 分别为 <Operation>Input、<Operation>Output,Input/Output 不使用 json 标签,仅在需要时加校验标签。文件内顺序固定:Input、Output、含依赖的用例结构体、构造函数、Execute。

变体:无输入时定义空结构体(如 ContactListInput struct{})并保持相同契约;无输出时定义空输出并返回;无需校验时移除 validator.Validator 依赖。可注入多个 ports(仓储、缓存、服务)做编排。

常见模式:创建前查重(用 errors.Is 判断 brickserrors.ErrRecordNotFound,存在则返回 brickserrors.ErrAlreadyExists)、枚举转换、列表映射为输出 DTO。

装配:用 Fx 注册原始用例,并通过 ucdecorator.Wrap(factory, rawUseCase) 装饰,自动推断用例名与指标名;可用 fx.In + fx.Out 的集中 provider 减少样板代码,处理器通过 ucdecorator.UseCase[Input, Output] 强类型注入。

规则:用例只依赖 ports.* 接口;只保留一个公开 Execute,不写私有包装;始终定义 Input 与 Output;命名在文件、结构体、构造函数、方法间保持一致;返回类型化 DTO,不直接暴露持久化模型;可观测性与错误转换放在用例之外。

收尾:按 go-unit-tests 技能编写单元测试,运行 make test、make lint、make nilaway。

限制:资料未提供该技能的安装方式、收费、支持平台与效果数据。