一个为结构字段自动生成ENUM的Go工具

416 阅读1分钟

Fielder

Fielder是一个生成Go代码的工具,可以从结构中提取字段并将其转化为ENUM。 此外,它还增加了有用的方法和函数。

动机

当使用ORM-s如gorm,go-pg,bun ,你必须将列名作为不同方法的参数来传递。使用原始字符串是一件很痛苦的事情,而且还可能有安全风险。依靠ENUM来表示特定表的列会好很多。

特点

该库提供了以下功能:

  • 为结构字段生成ENUM
  • 生成验证ENUM值的方法
  • 生成函数来列出所有的ENUM值
  • 基于标签的字段名提取
  • 嵌入字段的提取
  • 排除字段
  • 不同的格式化(骆驼、帕斯卡尔、蛇)。
  • 模板覆盖

安装

$ go install github.com/kpeu3i/fielder@v1.0.1

使用方法

go:generate 指令放在与您要生成的结构相同的软件包中 例如:

//go:generate fielder -type=UserAccount

package domain
 
type UserAccount struct {
    FirstName string
    LastName  string
    Email     string
    Password  string
}

然后,运行下面的命令来生成代码:

$ go generate ./...

有关详细信息,请查看example 文件夹中的示例。

允许使用以下CLI标志:

Usage of fielder:
  -embedded
        Extract embedded fields (default false)
  -excluded string
        Comma separated list of excluded fields (default "")
  -format string
        Format of the generated type values (default "as_is")
  -output string
        Set output filename (default "<src_dir>/<type>_fielder.go")
  -pkg string
        Package name to extract type from (default ".")
  -suffix string
        Suffix for the generated struct (default "Field")
  -tag string
        Use tag to extract field values from (default "")
  -tpl string
        Set template filename (default "")
  -type string
        Type to extract fields from