"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > GORM फ़ील्ड एनोटेशन को प्रोटोबफ़ परिभाषाओं में कैसे एकीकृत करें?

GORM फ़ील्ड एनोटेशन को प्रोटोबफ़ परिभाषाओं में कैसे एकीकृत करें?

2024-11-08 को प्रकाशित
ब्राउज़ करें:237

How to Integrate GORM Field Annotations into Protobuf Definitions?

फील्ड एनोटेशन को प्रोटोबफ परिभाषाओं में एकीकृत करना

डेवलपर्स जो अपनी प्रोटोबफ परिभाषाओं के भीतर जीओआरएम द्वारा प्रदान किए गए फील्ड एनोटेशन का उपयोग करना चाहते हैं, उन्हें अनुपस्थिति के कारण चुनौतियों का सामना करना पड़ सकता है। प्रोटोबफ़ 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