将字段注释集成到 Protobuf 定义中
寻求在其 protobuf 定义中使用 GORM 提供的字段注释的开发人员可能会因缺少字段注释而遇到挑战Protobuf 3 语法中的本机日期时间类型。
为了解决这个问题,可以使用后处理脚本来使用所需的 GORM 注释来增强生成的原型文件。例如,给定以下 protobuf 配置文件定义:
message Profile {
uint64 id = 1;
string name = 2;
bool active = 3;
}
以下脚本(“gorm.sh”)可用于后处理:
#!/bin/bash
g () {
sed "s/json:\"$1,omitempty\"/json:\"$1,omitempty\" gorm:\"$2\"/"
}
cat $1 \
| g "id" "primary_key" \
| g "name" "varchar(100)" \
> $1.tmp && mv $1{.tmp,}
通过在生成的 protobuf 文件(例如 ./gorm.sh profile/profile.pb.go)上调用脚本,结果输出将是:
//...
type Profile struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty" gorm:"type:primary_key"`
Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty" gorm:"type:varchar(100)"`
Active bool `protobuf:"varint,3,opt,name=active,proto3" json:"active,omitempty"`
}
//...
这种方法可以将 GORM 字段注释集成到 protobuf 定义中,而不需要自定义实现或第三方库。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3