Maison > développement back-end > Golang > Comment intégrer les annotations de champs GORM dans les définitions Protobuf ?

Comment intégrer les annotations de champs GORM dans les définitions Protobuf ?

Linda Hamilton
Libérer: 2024-10-27 04:27:03
original
784 Les gens l'ont consulté

How to Integrate GORM Field Annotations into Protobuf Definitions?

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal