Heim > Artikel > Backend-Entwicklung > Wie integrieren Sie gorm.Model-Felder in Protobuf-Definitionen beim Umgang mit Datetime-Typen und was sind die Vor- und Nachteile verschiedener Methoden?
Die Integration von gorm.Model-Feldern in Protobuf-Definitionen wird erforderlich, wenn Daten für die Datenbankverwendung strukturiert werden. Obwohl protobuf keinen datetime-Typ hat, kann eine Lösung durch Anpassen des generierten protobuf-Codes entwickelt werden.
Fehlgeschlagene Lösung mit protoc-gen-gorm
Versuche, das zu implementieren Das Protoc-Gen-Gorm-Projekt erwies sich aufgrund möglicher Konflikte zwischen Proto2 und Proto3 während des Mischvorgangs als erfolglos.
Benutzerdefiniertes Skript für die Nachbearbeitung
Ein alternativer Ansatz ist Erstellen Sie ein benutzerdefiniertes Skript für die Nachbearbeitung, nachdem Sie Go-Dateien aus Protobuf generiert haben. Hier ist eine Aufschlüsselung der Lösung:
Original-Protobuf-Datei
<code class="proto">message Profile { uint64 id = 1; string name = 2; bool active = 3; }</code>
Generierte Protobuf-Go-Datei
<code class="go">type Profile struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Active bool `protobuf:"varint,3,opt,name=active,proto3" json:"active,omitempty"` }</code>
Benutzerdefiniertes GORM-Skript
<code class="bash">g () { sed "s/json:\",omitempty\"/json:\",omitempty\" gorm:\"type:\"/" } cat \ | g "id" "primary_key" \ | g "name" "varchar(100)" \ > .tmp && mv {.tmp,}</code>
Nachbearbeitete Protobuf-Go-Datei
<code class="go">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>
Dieses Skript fügt dem generierten Protobuf-Go Gorm-Feld-Tags hinzu Datei, die die Integration von Protobuf-Definitionen mit gorm.Model-Feldern für nahtlose Datenbankinteraktionen ermöglicht.
Das obige ist der detaillierte Inhalt vonWie integrieren Sie gorm.Model-Felder in Protobuf-Definitionen beim Umgang mit Datetime-Typen und was sind die Vor- und Nachteile verschiedener Methoden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!