Wie integriere ich GORM-Feldanmerkungen in Protobuf-Definitionen?

Linda Hamilton
Freigeben: 2024-10-27 04:27:03
Original
689 Leute haben es durchsucht

How to Integrate GORM Field Annotations into Protobuf Definitions?

Integration von Feldanmerkungen in Protobuf-Definitionen

Entwickler, die von GORM bereitgestellte Feldanmerkungen in ihren Protobuf-Definitionen nutzen möchten, können aufgrund des Fehlens auf Herausforderungen stoßen eines nativen Datetime-Typs in Protobuf 3-Syntax.

Um dieses Problem zu beheben, kann ein Nachbearbeitungsskript verwendet werden, um die generierten Protodateien mit den gewünschten GORM-Anmerkungen zu ergänzen. Zum Beispiel anhand der folgenden Protobuf-Profildefinition:

<code class="protobuf">message Profile {
  uint64 id = 1;
  string name = 2;
  bool active = 3;
}</code>
Nach dem Login kopieren

Das folgende Skript („gorm.sh“) kann für die Nachbearbeitung verwendet werden:

<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>
Nach dem Login kopieren

Durch Aufrufen des Skripts In der generierten Protobuf-Datei (z. B. ./gorm.sh Profile/profile.pb.go) lautet die resultierende Ausgabe:

<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>
Nach dem Login kopieren

Dieser Ansatz ermöglicht die Integration von GORM-Feldanmerkungen in Protobuf-Definitionen ohne die Notwendigkeit benutzerdefinierter Implementierungen oder Bibliotheken von Drittanbietern.

Das obige ist der detaillierte Inhalt vonWie integriere ich GORM-Feldanmerkungen in Protobuf-Definitionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!