Protobuf 정의에 필드 주석 통합
protobuf 정의 내에서 GORM이 제공하는 필드 주석을 활용하려는 개발자는 부재로 인해 문제에 직면할 수 있습니다. Protobuf 3 구문의 기본 날짜/시간 유형입니다.
이 문제를 해결하기 위해 사후 처리 스크립트를 사용하여 생성된 proto 파일을 원하는 GORM 주석으로 보강할 수 있습니다. 예를 들어 다음 protobuf 프로필 정의가 있다고 가정해 보겠습니다.
message Profile {
uint64 id = 1;
string name = 2;
bool active = 3;
}
후처리에는 다음 스크립트("gorm.sh")를 사용할 수 있습니다.
#!/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,}
생성된 protobuf 파일(예: ./gorm.sh profile/profile.pb.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"`
}
//...
이 접근 방식을 사용하면 사용자 정의 구현이나 타사 라이브러리 없이도 GORM 필드 주석을 protobuf 정의에 통합할 수 있습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3