首頁 > 後端開發 > Golang > 主體

在處理日期時間類型時,如何將 gorm.Model 欄位整合到 Protobuf 定義中,不同方法的優缺點是什麼?

Susan Sarandon
發布: 2024-11-01 06:44:02
原創
889 人瀏覽過

How do you integrate gorm.Model fields into Protobuf definitions while handling datetime types, and what are the pros and cons of different methods?

Gorm 模型欄位的 Protobuf 整合

在建置資料庫所使用的資料時,必須將 gorm.Model 欄位整合到 protobuf 定義中。儘管 protobuf 缺乏日期時間類型,但可以透過自訂產生的 protobuf 程式碼來設計解決方案。

使用protoc-gen-gorm 失敗的解決方案

嘗試實現protoc-gen-gorm 專案被證明是徒勞的,因為在混合過程中proto2 和proto3之間可能存在衝突。

用於後處理的自訂腳本

另一種方法是從 protobuf 產生 go 檔案後建立用於後處理的自訂腳本。以下是解決方案的細分:

原始Protobuf 檔案

<code class="proto">message Profile {
  uint64 id = 1;
  string name = 2;
  bool active = 3;
}</code>
登入後複製

產生的Protobuf Go

<code class="go">type Profile struct {
    state         protoimpl.MessageState
    sizeCache     protoimpl.SizeCache
    unknownFields protoimpl.UnknownFields

    Id     uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
    Name   string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
    Active bool   `protobuf:"varint,3,opt,name=active,proto3" json:"active,omitempty"`
}</code>
登入後複製
產生的Protobuf Go

<code class="bash">g () {
  sed "s/json:\",omitempty\"/json:\",omitempty\" gorm:\"type:\"/"
}

cat  \
| g "id" "primary_key" \
| g "name" "varchar(100)" \
> .tmp && mv {.tmp,}</code>
登入後複製

自訂GORM 腳本

<code class="go">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>
登入後複製

後處理的Protobuf Go 檔案

此腳本此腳本

以上是在處理日期時間類型時,如何將 gorm.Model 欄位整合到 Protobuf 定義中,不同方法的優缺點是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!