gorm.Model 필드를 Protobuf 정의에 통합
gorm.Model 필드(deleted_at, Created_at, id 등)를 proto3에 통합 특히 proto3에는 날짜/시간 유형이 없기 때문에 정의가 어려울 수 있습니다. 그러나 실행 가능한 솔루션이 있습니다.
사용자 지정 스크립트 접근 방식
protoc-gen-gorm 프로젝트가 적합하지 않은 것으로 판명되었으므로 한 가지 해결책은 사용자 지정 후처리 스크립트를 만드는 것입니다. . protobuf에서 go 파일을 생성한 후 이 스크립트는 proto3 정의 파일을 조작하여 필요한 gorm 필드를 포함할 수 있습니다.
예:
proto 파일 프로필이 있는 경우 /profile.proto:
message Profile { uint64 id = 1; string name = 2; bool active = 3; // ... }
표준 protoc 명령을 사용하여 초기 go 파일을 생성합니다.
protoc profile/profile.proto --go_out=plugins=grpc:profile
그런 다음 gorm.sh 스크립트를 사용하여 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>
이렇게 하면 생성된 go 파일에 gorm 주석이 추가됩니다.
<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>
고려사항
위 내용은 gorm.Model 필드를 Protobuf 정의에 통합하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!