>백엔드 개발 >Golang >GORM 필드 주석을 Protobuf 정의에 통합하는 방법은 무엇입니까?

GORM 필드 주석을 Protobuf 정의에 통합하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-27 04:27:03764검색

How to Integrate GORM Field Annotations into Protobuf Definitions?

Protobuf 정의에 필드 주석 통합

protobuf 정의 내에서 GORM이 제공하는 필드 주석을 활용하려는 개발자는 부재로 인해 문제에 직면할 수 있습니다. Protobuf 3 구문의 기본 날짜/시간 유형입니다.

이 문제를 해결하기 위해 후처리 스크립트를 사용하여 생성된 proto 파일을 원하는 GORM 주석으로 보강할 수 있습니다. 예를 들어 다음 protobuf 프로필 정의가 있다고 가정해 보겠습니다.

<code class="protobuf">message Profile {
  uint64 id = 1;
  string name = 2;
  bool active = 3;
}</code>

후처리에 다음 스크립트("gorm.sh")를 사용할 수 있습니다.

<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>

스크립트를 호출하여 생성된 protobuf 파일(예: ./gorm.sh profile/profile.pb.go)에서 결과 출력은 다음과 같습니다.

<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>

이 접근 방식을 사용하면 GORM 필드 주석을 protobuf 정의에 통합할 수 있습니다. 맞춤형 구현 또는 타사 라이브러리가 필요합니다.

위 내용은 GORM 필드 주석을 Protobuf 정의에 통합하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.