Lilly
(Lillian Louis)
26 أغسطس 2023، 9:47م
1
أنا لا أفهم تمامًا شرط الملء الخلفي لذلك سأجعل لولا بوت تشرح.
إعجابَين (2)
Sam Saffron:
الشارة التالية يتم تشغيلها عند “عندما يتصرف مستخدم على منشور”، وهذا يعني أن تطبيقات “دلتا” ستحصل على المعامل :post_ids.
SELECT p.user_id, p.id post_id, p.updated_at granted_at
FROM badge_posts p
WHERE p.like_count >= 25 AND
(:backfill OR p.id IN (:post_ids) )
تسمح لنا العبارة (:backfill OR p.id IN (:post_ids) ) بتصفية النتائج. عندما تعمل المهمة اليومية، تكون :backfill صحيحة، لذلك يتم مسح المجموعة بأكملها. عندما تعمل مهام دلتا، تكون :backfill خاطئة ويتم تعيين :post_ids.
كنت أحاول تشغيلها عند “عندما يتصرف مستخدم على منشور”، ولكن أعتقد أن ردود أفعالي قد تمنع ذلك بطريقة ما؟ على أي حال، “التحديث اليومي” سيعمل، وهو أقل مصدر قلق للأداء، أعتقد.
5 إعجابات
Lilly
(Lillian Louis)
26 أغسطس 2023، 9:58م
3
نعم، هذا منطقي تمامًا بالنسبة لي الآن. أعتقد أنني أفضل شرح سام.
هل يمكنك شرح شرط الملء الاحتياطي (backfill condition) بشكل أكبر يا لولا؟
Lola Bot:
بالتأكيد يا ليلي! في Discourse، تُعدّ :backfill و :post_ids معلمات تُستخدم عند تشغيل استعلامات الشارات (badges). تُستخدم للتحكم في المنشورات التي يتم النظر فيها عند منح الشارة.
:backfill هي معلمة منطقية (boolean). عندما تكون :backfill تساوي true، يتم تشغيل استعلام الشارة على جميع المنشورات المؤهلة في قاعدة البيانات. يُستخدم هذا عادةً عند إنشاء شارة لأول مرة أو عندما تريد إعادة حساب من يجب أن يحصل على الشارة بناءً على جميع البيانات التاريخية.
:post_ids هي قائمة بمعرفات المنشورات (post IDs). عندما تكون :backfill تساوي false، يتم تشغيل استعلام الشارة فقط على المنشورات التي توجد معرفاتها في قائمة :post_ids. يُستخدم هذا عادةً للتحقق مما إذا كان يجب منح شارة بناءً على منشور جديد أو مجموعة من المنشورات الحديثة، بدلاً من جميع المنشورات.
يضمن الشرط (:backfill OR p.id IN (:post_ids)) في جملة WHERE في استعلام SQL ما يلي:
إذا كانت :backfill تساوي true، فسيكون الشرط دائمًا true وسيتم النظر في جميع المنشورات (لأن true OR anything تكون دائمًا true).
إذا كانت :backfill تساوي false، فسيتم النظر فقط في المنشورات التي توجد معرفاتها في قائمة :post_ids (لأن false OR p.id IN (:post_ids) ستكون true فقط للمنشورات التي توجد معرفاتها في قائمة :post_ids).
يتيح هذا لـ Discourse منح الشارات بكفاءة إما بناءً على جميع المنشورات التاريخية أو بناءً على مجموعة صغيرة من المنشورات الحديثة، اعتمادًا على الموقف.
5 إعجابات
أعتقد أنني بحاجة إلى النظر في الاستعلامات التي تتطلب بالفعل إضافة الشارة. أعتقد أنه إذا كنت تستخدم “تحديث يومي” فإنه ليس ضروريًا:
إعجابَين (2)
system
(system)
تم إغلاقه في
25 سبتمبر 2023، 10:06م
6
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.