फील्ड एनोटेशन को प्रोटोबफ परिभाषाओं में एकीकृत करना
डेवलपर्स जो अपनी प्रोटोबफ परिभाषाओं के भीतर जीओआरएम द्वारा प्रदान किए गए फील्ड एनोटेशन का उपयोग करना चाहते हैं, उन्हें अनुपस्थिति के कारण चुनौतियों का सामना करना पड़ सकता है। प्रोटोबफ़ 3 सिंटैक्स में एक मूल डेटाटाइम प्रकार का।
इसे संबोधित करने के लिए, वांछित GORM एनोटेशन के साथ जेनरेट की गई प्रोटो फ़ाइलों को बढ़ाने के लिए एक पोस्ट-प्रोसेसिंग स्क्रिप्ट को नियोजित किया जा सकता है। उदाहरण के लिए, निम्नलिखित प्रोटोबफ़ प्रोफ़ाइल परिभाषा दी गई है:
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,}
जनरेट की गई प्रोटोबफ़ फ़ाइल (उदाहरण के लिए, ./gorm.sh प्रोफ़ाइल/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 फ़ील्ड एनोटेशन के एकीकरण को सक्षम बनाता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3