SuperAPI AI 工具集

go-enum

编程与开发

查看项目

更新于 10-15 20:14

技能介绍

用途:go-enum 在 Hive 中根据源码里的 // ENUM(...) 注释生成枚举方法,生成文件会被提交,禁止手动编辑。

主要能力:为枚举类型生成 ParseXxx、IsValid、String、MarshalText/UnmarshalText、XxxValues 以及各值常量。生成文件命名为 <源文件名>_enum.go,同一源文件中的多个枚举会写入同一文件。

使用方式:在类型上写注释,例如 // ENUM(epic, task) 后定义 type ItemType string。修改注释或新增枚举后运行 mise run generate:enums(仅 go-enum)或 mise run generate(go-enum 与 sqlc)。新增值只需在注释中追加,再运行生成命令,并更新相关 switch 或 OneOf 校验。新增枚举类型则在合适源文件中创建带 ENUM 注释的类型并运行生成。

集成:与 sqlc 配合时,可在 sqlc.yaml 中通过 overrides 将列映射到生成的枚举类型,避免存储层字符串转换;与 criterio 校验配合时使用 criterio.OneOf(...) 显式列出有效常量,而不是调用 IsValid。

限制与注意:不要手动定义常量或编辑 *_enum.go,生成会覆盖。零值不是有效枚举,未初始化的空字符串会校验失败,需始终初始化枚举字段。字符串值与 ENUM 注释完全一致,默认小写。若新增含 ENUM 的源文件,需在 mise.toml 的 [tasks."generate:enums"] sources 列表中加入,以便 mise 正确检测变更。