"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية دمج التعليقات التوضيحية لحقل GORM في تعريفات Protobuf؟

كيفية دمج التعليقات التوضيحية لحقل GORM في تعريفات Protobuf؟

تم النشر بتاريخ 2024-11-08
تصفح:883

How to Integrate GORM Field Annotations into Protobuf Definitions?

دمج التعليقات التوضيحية الميدانية في تعريفات البروتوبوف

قد يواجه المطورون الذين يسعون إلى الاستفادة من التعليقات التوضيحية الميدانية المقدمة من 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