Intégration des annotations de champ dans les définitions de Protobuf
Les développeurs cherchant à utiliser les annotations de champ fournies par GORM dans leurs définitions de protobuf peuvent rencontrer des difficultés en raison de l'absence d'un type datetime natif dans la syntaxe Protobuf 3.
Pour résoudre ce problème, un script de post-traitement peut être utilisé pour augmenter les fichiers proto générés avec les annotations GORM souhaitées. Par exemple, étant donné la définition de profil protobuf suivante :
<code class="protobuf">message Profile { uint64 id = 1; string name = 2; bool active = 3; }</code>
Le script suivant ("gorm.sh") peut être utilisé pour le post-traitement :
<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>
En appelant le script sur le fichier protobuf généré (par exemple, ./gorm.sh profile/profile.pb.go), le résultat résultant sera :
<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>
Cette approche permet l'intégration des annotations de champ GORM dans les définitions de protobuf sans le besoin d'implémentations personnalisées ou de bibliothèques tierces.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!