-
-
Notifications
You must be signed in to change notification settings - Fork 304
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
能否支持下字段属性的枚举生成 #262
Comments
如果只是对数字类型的枚举可以通过在生成的时候加入 |
如果是字符串或者其他的枚举类型就实现ScanValuer接口就可以了 |
如果这样的话,“basic.Type" 的 import 路径如何适配,这类constant文件不在一个package里 |
可以直接用 |
Line 479 in d69c6d6
这里model的模版都是写死了的 gen/internal/template/model.go Line 7 in d69c6d6
在经过process后遗留的package会被导入 Line 496 in d69c6d6
生成出来的model 头是这样的, import (
"time"
"gorm.io/gorm"
) 如果改的话是直接在model template的import 里面加变量控制吗😅 |
用 |
在使用枚举类时, 这个ScanValuer接口,无法兼容 database/sql scanner 接口 https://husobee.github.io/golang/database/2015/06/12/scanner-valuer.html |
是因为没有用指针吧? ScanValuer接口的Scan用的就是database/sql的Scanner方法 |
可以给多一点提示吗😭 |
我发现数据库读出来的record里面的值无法映射成枚举类 |
😂就是说 Type这个字段,类型可以用 |
因为scan方法没有生效吧 |
原来我是这样写的 func (a ArtworkSnapshotType) Scan(value interface{}) error {
return nil
} 后面写成这样 func (a *ArtworkSnapshotType) Scan(value interface{}) error {
if v, ok := value.(int64); ok {
*a = ArtworkSnapshotType(v)
return nil
}
return errors.New("failed to scan ArtworkSnapshotType")
} 编译不过
|
用指针做接收器就是*constant.ArtworkSnapshotType实现了field.ScanValuer,而不是constant.ArtworkSnapshotType实现了field.ScanValuer 另外,只能用指针作为接收器,不然不能修改自身的值 |
字段如果用了*const.ArtworkSnapshotType,业务编码时将带来更多的复杂性,思虑再三还是不想用枚举了 还有就是scan 出来的value竟然是 查了下也有类似的 go-sql-driver/mysql#441 |
嗯嗯,自定义类型的方法如果不用指针是不能修改自身值的,这是go本身的特性。这个value类型是[]uint8应该是受数据库里的类型影响吧,确实比较奇怪 |
在编码过程中,经常会遇到用某个数值来表示某种状态、类型或者阶段的情况,比如有这样一个枚举:
通常我们希望将表示状态的数值存入数据库,即ComputerState.OPEN存入数据库取值为10。
能否通过field comment的中备注,来生成对应枚举值
比如可以约定注释检查规则的正则表达式如下
提取出字段属性相应的枚举
The text was updated successfully, but these errors were encountered: