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>
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>
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>
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!