Intégration des champs gorm.Model dans les définitions Protobuf
Intégration des champs gorm.Model (deleted_at, create_at, id, etc.) dans proto3 les définitions peuvent être difficiles, d'autant plus que proto3 n'a pas de type datetime. Cependant, il existe des solutions réalisables.
Approche de script personnalisé
Le projet protoc-gen-gorm s'étant révélé inadapté, une solution consiste à créer un script de post-traitement personnalisé. . Après avoir généré les fichiers go à partir de protobuf, ce script peut manipuler le fichier de définition proto3 pour inclure les champs gorm nécessaires.
Exemple :
Si nous avons un profil de fichier proto /profile.proto :
message Profile { uint64 id = 1; string name = 2; bool active = 3; // ... }
Générez le fichier go initial à l'aide de la commande protoc standard :
protoc profile/profile.proto --go_out=plugins=grpc:profile
Ensuite, utilisez le script gorm.sh pour ajouter les annotations gorm :
<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>
Cela ajoutera les annotations gorm au fichier go généré :
<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>
Considérations
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!