首頁 > 後端開發 > Golang > 如何將 GORM 欄位註解整合到 Protobuf 定義中?

如何將 GORM 欄位註解整合到 Protobuf 定義中?

Linda Hamilton
發布: 2024-10-27 04:27:03
原創
764 人瀏覽過

How to Integrate GORM Field Annotations into Protobuf Definitions?

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板