Heim >Backend-Entwicklung >Golang >Wie integriere ich gorm.Model-Felder in Protobuf-Definitionen?
Integration von gorm.Model-Feldern in Protobuf-Definitionen
Integration der gorm.Model-Felder (gelöscht_at, erstellt_at, id usw.) in proto3 Definitionen können eine Herausforderung sein, insbesondere da Proto3 keinen Datetime-Typ hat. Es gibt jedoch praktikable Lösungen.
Benutzerdefinierter Skript-Ansatz
Da sich das Projekt protoc-gen-gorm als ungeeignet erwiesen hat, besteht eine Lösung darin, ein benutzerdefiniertes Nachbearbeitungsskript zu erstellen . Nach dem Generieren der Go-Dateien aus Protobuf kann dieses Skript die Proto3-Definitionsdatei so bearbeiten, dass sie die erforderlichen Gorm-Felder enthält.
Beispiel:
Wenn wir ein Proto-Dateiprofil haben /profile.proto:
message Profile { uint64 id = 1; string name = 2; bool active = 3; // ... }
Generieren Sie die anfängliche Go-Datei mit dem Standardprotokollbefehl:
protoc profile/profile.proto --go_out=plugins=grpc:profile
Verwenden Sie dann das Skript gorm.sh, um die Gorm-Anmerkungen hinzuzufügen:
<code class="bash">#!/bin/bash g () { sed "s/json:\",omitempty\"/json:\",omitempty\" gorm:\"\"/"" } cat profile/profile.pb.go \ | g "id" "primary_key" \ | g "name" "varchar(100)" \ > profile/profile.pb.go.tmp && mv profile/profile.pb.go{.tmp,}</code>
Dadurch werden die Gorm-Anmerkungen zur generierten GO-Datei hinzugefügt:
<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>
Überlegungen
Das obige ist der detaillierte Inhalt vonWie integriere ich gorm.Model-Felder in Protobuf-Definitionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!