ホームページ > バックエンド開発 > Golang > GORM フィールドのアノテーションを Protobuf 定義に統合するにはどうすればよいですか?

GORM フィールドのアノテーションを Protobuf 定義に統合するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-10-27 04:27:03
オリジナル
785 人が閲覧しました

How to Integrate GORM Field Annotations into Protobuf Definitions?

フィールド アノテーションを Protobuf 定義に統合する

GORM によって提供されるフィールド アノテーションを protobuf 定義内で利用しようとする開発者は、protobuf 定義が存在しないため、課題に遭遇する可能性があります。

これに対処するには、後処理スクリプトを使用して、生成された proto ファイルに必要な 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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート