將欄位註解整合到Protobuf 定義中
尋求在其protobuf 定義中使用GORM 提供的欄位註解的開發人員可能會因註解缺少欄位註解而遇到挑戰Protobuf 3 語法中的本機日期時間類型。 為了解決這個問題,可以使用後處理腳本來使用所需的 GORM 註解來增強產生的原型文件。例如,給定以下 protobuf 設定檔定義:message Profile {
uint64 id = 1;
string name = 2;
bool active = 3;
}
message Profile {
uint64 id = 1;
字串名稱=2;
布爾活躍 = 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,}
#!/bin/bash
克(){
sed "s/json:\"$1,omitempty\"/json:\"$1,omitempty\" gorm:\"$2\"/"
}
貓1美元\
| g“id”“primary_key”\
| g「名稱」「varchar(100)」\
> $1.tmp && mv $1{.tmp,}透過在產生的protobuf 檔案(例如./gorm.sh profile/profile.pb.go)上呼叫腳本,結果輸出將是: message Profile {
uint64 id = 1;
string name = 2;
bool active = 3;
}
//...
類型設定檔結構 {
狀態 protoimpl.MessageState
sizeCache protoimpl.SizeCache
未知字段 protoimpl.UnknownFields
Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty" gorm:"type:primary_key"`
名稱字串 `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