」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何將 GORM 欄位註解整合到 Protobuf 定義中?

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

發佈於2024-11-08
瀏覽:825

How to Integrate GORM Field Annotations into Protobuf Definitions?

將欄位註解整合到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 定義中,而不需要自訂實作或第三方函式庫。

最新教學 更多>
  • WordPress 遷移外掛程式終極指南
    WordPress 遷移外掛程式終極指南
    迁移 WordPress 网站就像收拾房子搬到新房子一样。确保所有内容(内容、主题、插件、媒体文件甚至数据库)完美移动且没有任何损坏的挑战似乎令人望而生畏。但就像搬家公司让搬家变得更容易一样,WordPress 迁移插件简化了将网站从一台主机移动到另一台主机的复杂过程。 无论您是切换主机、从本地开发...
    程式設計 發佈於2024-11-08
  • 如何使用穩健的解決方案來增強 PHP 中的 HTML 抓取
    如何使用穩健的解決方案來增強 PHP 中的 HTML 抓取
    PHP 中強大的HTML 抓取解決方案由於其挑剔和脆弱的性質,在PHP 中使用正則表達式進行HTML抓取可能具有挑戰性。若要獲得更強大、更可靠的方法,請考慮使用專門建置的 PHP 套件。 強烈推薦的選項之一是 PHP Simple HTML DOM Parser。該庫擅長處理 HTML(包括無效標籤...
    程式設計 發佈於2024-11-08
  • 如何偵測 Go 標準輸入 (Stdin) 中的資料可用性?
    如何偵測 Go 標準輸入 (Stdin) 中的資料可用性?
    使用Go 檢測標準輸入(Stdin) 中的資料可用性在Go 中,可以使用以下技術檢查標準輸入流(os.Stdin) 中的資料:驗證其檔案大小。它的工作原理如下:os.Stdin 可以像任何常規文件一樣對待,允許我們檢查其屬性。為此,我們使用 os.Stdin.Stat() 檢索 FileInfo 物...
    程式設計 發佈於2024-11-08
  • Wasp:Web 開發中 Django 的 JavaScript 答案
    Wasp:Web 開發中 Django 的 JavaScript 答案
    Wasp v Django: Building a full stack application just got a lot easier Hey, I’m Sam, a backend engineer with a lot of experience with Django....
    程式設計 發佈於2024-11-08
  • 如何在沒有鍵盤中斷的情況下透過按鍵中斷 While 迴圈?
    如何在沒有鍵盤中斷的情況下透過按鍵中斷 While 迴圈?
    透過按鍵中斷While 循環在使用while 循環讀取串行資料並將其寫入CSV 檔案的場景中,您可能希望為使用者提供終止循環以停止資料收集的選項。本文探討了在不明確使用鍵盤中斷的情況下實現此類功能的技術。 一個簡單的方法是利用 try- except 區塊來處理 KeyboardInterrupt ...
    程式設計 發佈於2024-11-08
  • 週 oot 訓練營學習
    週 oot 訓練營學習
    我決定邁出大膽的一步,參加由 LuxDevHQ 組織的我的第一個資料職業訓練營。這是一個為期 5 週的訓練營,旨在培養實踐資料技能。該訓練營旨在讓人們接觸至少 4 個專業領域的各種資料技能。 第一周以資訊會議開始,我進行了專案定向,並向我介紹了該專案並了解了整個專案的期望。 在這第一周,我學到了...
    程式設計 發佈於2024-11-08
  • 如何使用 Homebrew 和 jenv 在 Mac OS X 上管理多個 Java 版本?
    如何使用 Homebrew 和 jenv 在 Mac OS X 上管理多個 Java 版本?
    在Mac OS X 上管理多個Java 版本由於Java 管理其安裝的方式,在Mac OS X 上安裝多個Java 版本可能是一項挑戰。不過,有一個解決方案可以讓您輕鬆安裝和管理不同的 Java 版本:Homebrew。 使用 Homebrew 和 jenvHomebrew 是一個套件管理器,可以簡...
    程式設計 發佈於2024-11-08
  • 如何建立 React 應用程式?安裝與環境設置
    如何建立 React 應用程式?安裝與環境設置
    在開始使用 React 建立應用程式之前,擁有正確的開發環境非常重要。以下是幫助您入門的分步指南: 步驟 1. 安裝 Node.js 和 npm 設定 React 環境的第一步是安裝 Node.js,因為它提供了在瀏覽器外部執行程式碼所需的 JavaScript 執行程式時。當您安裝 Node.js...
    程式設計 發佈於2024-11-08
  • python 並發.futures
    python 並發.futures
    未来 Future 是一个容器,可以保存计算结果或计算期间发生的错误。创建 future 时,它​​以 PENDING 状态开始。该库不打算手动创建此对象,除非出于测试目的。 import concurrent.futures as futures f = futures.Futu...
    程式設計 發佈於2024-11-08
  • 使用純 Javascript 只需幾行即可實現飛向購物車的動畫。
    使用純 Javascript 只需幾行即可實現飛向購物車的動畫。
    最近,我偶然發現了一個舊教程,展示了使用 jQuery 實現飛行到購物車的動畫。我想透過使用純 JavaScript 實現相同的效果來挑戰自己。 我創建了一個包含產品和購物車圖示的簡單佈局。樣式並不重要,所以我們不會在這裡討論它。 訣竅是複製產品圖像,將其添加到產品元素之前。然後計算克隆圖像和購...
    程式設計 發佈於2024-11-08
  • Bokeh 是一個有趣的 Python 資料視覺化資料工具
    Bokeh 是一個有趣的 Python 資料視覺化資料工具
    資料視覺化在解釋大量資訊方面發揮關鍵作用。 Bokeh 等工具已成為建立互動式儀表板和報告的流行解決方案。每個工具都具有獨特的優勢,具體取決於您專案的複雜性和您首選的程式語言。在本文中,我們將深入研究每個工具,然後專注於 Bokeh,包括實踐範例和雲端中的部署。 以便... 什麼是散景? Bok...
    程式設計 發佈於2024-11-08
  • django-components v 模板現在與 Vue 或 React 相當
    django-components v 模板現在與 Vue 或 React 相當
    嘿,我是 Juro,我是 django-components 的維護者之一。在 v0.90-0.94 版本中,我們添加了一些功能,使模板中的元件使用更加靈活,類似於 JSX / Vue。 (此資訊已經有點過時了(一個月前發布;最新的是v0.101),因為我正忙著添加對JS / CSS 變數、Typ...
    程式設計 發佈於2024-11-08
  • 如何在 Go 中解密 AES ECB 模式加密?
    如何在 Go 中解密 AES ECB 模式加密?
    Go 中的AES ECB 加密Go 中的AES ECB 加密package main import ( "crypto/aes" "fmt" ) func decryptAes128Ecb(data, key []byte) []byte { ...
    程式設計 發佈於2024-11-08
  • 在 GitHub-echo 中實現 TOML 配置支持
    在 GitHub-echo 中實現 TOML 配置支持
    介绍 最近,我有机会通过添加对 TOML 配置文件的支持来增强 github-echo 命令行工具。此功能允许用户在 .github-echo-config.toml 文件中设置持久默认选项,从而减少每次使用该工具时手动输入重复配置的需要。在这篇文章中,我将向您介绍我在该功能上的经...
    程式設計 發佈於2024-11-08
  • 如何使用 SimpleXML 和 DOMDocument 刪除 XPath 節點?
    如何使用 SimpleXML 和 DOMDocument 刪除 XPath 節點?
    SimpleXML:刪除XPath 節點在本文中,我們將探討如何使用以下方法有效地從XML 文件中刪除父節點: SimpleXML 和XPath。 了解 SimpleXML限制提供的程式碼嘗試使用 SimpleXML 在透過 XPath 找到父節點後刪除它。然而,SimpleXML 的 unset(...
    程式設計 發佈於2024-11-08

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3