將欄位註解整合到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中文網其他相關文章!