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