„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie integriere ich GORM-Feldanmerkungen in Protobuf-Definitionen?

Wie integriere ich GORM-Feldanmerkungen in Protobuf-Definitionen?

Veröffentlicht am 08.11.2024
Durchsuche:748

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

Neuestes Tutorial Mehr>

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