"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como integrar anotações de campo GORM nas definições do Protobuf?

Como integrar anotações de campo GORM nas definições do Protobuf?

Publicado em 2024-11-08
Navegar:949

How to Integrate GORM Field Annotations into Protobuf Definitions?

Integrando anotações de campo em definições de protobuf

Desenvolvedores que buscam utilizar anotações de campo fornecidas pelo GORM em suas definições de protobuf podem encontrar desafios devido à ausência de um tipo de data e hora nativo na sintaxe do Protobuf 3.

Para resolver isso, um script de pós-processamento pode ser empregado para aumentar os arquivos proto gerados com as anotações GORM desejadas. Por exemplo, dada a seguinte definição de perfil protobuf:

message Profile {
  uint64 id = 1;
  string name = 2;
  bool active = 3;
}

O seguinte script ("gorm.sh") pode ser usado para pós-processamento:

#!/bin/bash

g () {
  sed "s/json:\"$1,omitempty\"/json:\"$1,omitempty\" gorm:\"$2\"/"
}

cat $1 \
| g "id" "primary_key" \
| g "name" "varchar(100)" \
> $1.tmp && mv $1{.tmp,}

Ao invocar o script no arquivo protobuf gerado (por exemplo, ./gorm.sh profile/profile.pb.go), a saída resultante será:

//...
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"`
}
//...

Essa abordagem permite a integração de anotações de campo GORM em definições de protobuf sem a necessidade de implementações personalizadas ou bibliotecas de terceiros.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3