Integration von Feldanmerkungen in Protobuf-Definitionen
Entwickler, die von GORM bereitgestellte Feldanmerkungen in ihren Protobuf-Definitionen verwenden 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. Beispiel: Angenommen, die folgende Protobuf-Profildefinition ist:
message Profile {
uint64 id = 1;
string name = 2;
bool active = 3;
}
Das folgende Skript („gorm.sh“) kann zur Nachbearbeitung verwendet werden:
#!/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,}
Durch Aufrufen des Skripts für die generierte Protobuf-Datei (z. B. ./gorm.sh profile/profile.pb.go) lautet die resultierende Ausgabe:
//...
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"`
}
//...
Dieser Ansatz ermöglicht die Integration von GORM-Feldanmerkungen in Protobuf-Definitionen, ohne dass benutzerdefinierte Implementierungen oder Bibliotheken von Drittanbietern erforderlich sind.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3