将字段注释集成到 Protobuf 定义中
寻求在其 protobuf 定义中使用 GORM 提供的字段注释的开发人员可能会遇到由于缺少字段注释而遇到的挑战Protobuf 3 语法中的本机日期时间类型。
为了解决这个问题,可以使用后处理脚本来使用所需的 GORM 注释来增强生成的原型文件。例如,给定以下 protobuf 配置文件定义:
<code class="protobuf">message Profile { uint64 id = 1; string name = 2; bool active = 3; }</code>
以下脚本(“gorm.sh”)可用于后处理:
<code class="bash">#!/bin/bash g () { sed "s/json:\",omitempty\"/json:\",omitempty\" gorm:\"\"/" } cat \ | g "id" "primary_key" \ | g "name" "varchar(100)" \ > .tmp && mv {.tmp,}</code>
通过调用脚本在生成的 protobuf 文件(例如 ./gorm.sh profile/profile.pb.go)上,生成的输出将是:
<code class="protobuf">//... 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"` } //...</code>
这种方法可以将 GORM 字段注释集成到 protobuf 定义中,而无需需要自定义实现或第三方库。
以上是如何将 GORM 字段注释集成到 Protobuf 定义中?的详细内容。更多信息请关注PHP中文网其他相关文章!