ماذا تود أن يُنفَّذ؟
RE: https://community.unix.com/
لقد أتممنا للتو الانتقال إلى Discourse، لكننا سنحتفظ بالوصول إلى منتدياتنا القديمة حتى عام 2021، لأن لدينا عقدين من الزمن من الكود القديم الذي يفخر به كل عضو من أعضائنا (وقد بذلنا فيه الكثير من الجهد).
نريد لموظفينا الذين يرغبون في التحقق من سلامة الكود المُهاجر بين الحين والآخر، إضافة مكون إضافي صغير يفصل قيمة value من topic_custom_fields، ويضيف فقط الرقم الصحيح (وهو معرف الخيط في المنتدى القديم) إلى TopicViewSerializer، بحيث يحتوي مُسلسل JSON على زوج مفتاح-قيمة إضافي:
"import_id": <معرف_الخيط_في_المنتدى_القديم>
انظر الاستعلام أدناه كمثال، بحيث تكون القيمة المضافة إلى TopicViewSerializer (لهذا معرف الموضوع في Discourse) هي:
"import_id": 284071
postgres=# \c discourse
أنت الآن متصل بقاعدة البيانات "discourse" كمستخدم "postgres".
discourse=# select * from topic_custom_fields where name like '%import_id%' and topic_id = 377947;
id | topic_id | name | value | created_at | updated_at
--------+----------+-----------+---------------+----------------------------+----------------------------
239520 | 377947 | import_id | thread-284071 | 2020-04-22 03:20:03.968513 | 2020-04-22 03:20:03.968513
(1 row)
نريد استخدام هذه الخاصية في مكون قالب على النحو التالي:
{{import_id}}
لأننا نريد مكون قالب صغير من نوع <span> لمخرج topic-category في plugin-outlet، والذي سيبدو كالتالي (ويكون مرئيًا فقط لمستوى الثقة المحدد لدينا):
<span class='import-id'>خيط المنتدى القديم <a class='import-id-link' href='https://www.unix.com/showthread.php?t={{import_id}}'>{{import_id}}</a></span>
متى تحتاج إلى إنجازه؟
أي وقت خلال الأسابيع القليلة القادمة مقبول. لا يوجد عجلة كبيرة.
ما هو ميزانيتك، بالدولار الأمريكي، التي يمكنك تقديمها لهذه المهمة؟
نرحب بجميع العروض المعقولة لهذا المكون الإضافي الصغير.
معلومات إضافية
نخطط لجعل هذا الكود متاحًا مجانًا للجميع ممن قاموا بهجرة مماثلة. ومع ذلك، من الممكن جدًا أن لا تكون لمنتديات قديمة أخرى مثل هذه المخاوف العالية بشأن سلامة البيانات للكود القديم، وبالتالي فقد يكون منتدى المنتدى الوحيد الذي يستخدم هذا المكون الإضافي.
لقد قمت أمس بكتابة وصف “معقد للغاية” وربما “غير دقيق” لهذا المتطلب؛ لذا أعتقد أن الوصف أعلاه أبسط وأسهل في الفهم (أتمنى ذلك):
ملاحظة
عملتُ بنفسي على هذا المكون الإضافي الصغير لعدة أيام، في أول محاولة لي لمكون إضافي في Discourse، واستمررت في الحصول على قيمة null لـ import_id في TopicViewSerializer.
تحديث
بفضل بعض اللطف والتوجيه، أصبحت الآن جزء المُسلسل من هذه المهمة يعمل بشكل صحيح.

