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

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

Linda Hamilton
Linda Hamilton原創
2024-10-27 04:27:03674瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn