يشرح هذا الدليل كيفية إنشاء استعلامات شارات مخصصة مُشغَّلة في Discourse، بما في ذلك أنواع الشارات، والقيود على الشارات المُشغَّلة، واستعلام مثال.
مستوى المستخدم المطلوب: مسؤول
هذه الميزة معطلة بشكل افتراضي. لتمكينها، اتبع هذا الدليل.
عند تحديد الشارات في Discourse، ستواجه خيار “التشغيل” (Trigger) مع الخيارات التالية:
- التحديث يوميًا
- عندما يتصرف المستخدم على منشور
- عندما يقوم المستخدم بتعديل منشور أو إنشائه
- عندما يغير المستخدم مستوى الثقة
- عندما يتم تعديل المستخدم أو إنشاؤه
تشغّل هذه المشغلات الشارات للعمل على فترات أكثر تكرارًا من يوميًا، مما يضمن إخطار المستخدمين بالشارات الجديدة في وقت أقرب لوقت وقوع الإجراء.
أنواع الشارات
هناك نوعان من الشارات يمكنك تحديدهما:
- شارات تستهدف المنشورات
- شارات لا تستهدف المنشورات
تتطلب جميع تعريفات SQL الخاصة بالشارة تحديد الأعمدة
user_idوgranted_at. إذا كانت شارتك تستهدف منشورات، فيجب عليك أيضًا تحديد عمود يسمىpost_id.
إذا لم تكن هذه الأعمدة متاحة بشكل مباشر، يمكنك تسميتها بأسماء مستعارة. على سبيل المثال:
u.id as user_idالقيود على الشارات المُشغَّلة
نظرًا لأن الشارات المُشغَّلة يمكن أن تعمل مرة واحدة في الدقيقة، تحتاج إلى تقديم المزيد من “التلميحات” في تعريف الشارة. لا يكفي إرجاع المجموعة الكاملة من الشارات؛ بل يجب عليك أيضًا تقديم تلميحات حول كيفية تنفيذ الشارة على مجموعة فرعية.
المشغلات المستندة إلى المستخدم
إذا كان المشغل الخاص بك يعتمد على المستخدم، فقم بتوفير عبارة حول كيفية تصفيته بناءً على
:user_ids.المشغلات المستندة إلى المنشور
إذا كان المشغل الخاص بك يعتمد على المنشور، فقم بتوفير معلومات حول كيفية تشغيله بناءً على
:post_ids.
تذكر أن إعادة الملء الكاملة تعمل يوميًا بغض النظر، لذا يجب أن تأخذ هذا في الاعتبار وتضمين معالجة للمعامل
:backfill.سيتضمن استعلام الشارة المُشغَّلة دائمًا المعامل
:backfillوإما المعامل:post_idsأو المعامل:user_ids.مثال على استعلام شارة مُشغَّلة
إليك مثال لشارة يتم تشغيلها “عندما يتصرف مستخدم على منشور”. في هذه الحالة، ستتلقى تطبيقات “الدلتا” (delta) المعامل
: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.لماذا التلميح اليدوي ضروري
يقوم استعلام منح الشارة بتشغيل استعلام الشارة الخاص بك في “استعلام فرعي”. غالبًا ما يواجه مُحسِّن PostgreSQL صعوبة عند فحص المجموعة الكاملة عندما تكون العبارة على الاستعلام الرئيسي. في حين أنه قد يتعامل مع الاستعلامات التافهة بشكل جيد، إلا أنه قد يتعثر في التجميعات الأكثر تعقيدًا.
لتجنب المشكلات المحتملة، تمت إضافة هذا القيد، مما يسمح لك بتطبيق المرشحات في المكان الأنسب.
هل تحتاج إلى مساعدة؟
إذا كنت تواجه صعوبة في كتابة استعلام شارة، انشر سؤالًا في Support - صف ما تحاول تحقيقه وضمّن عملك قيد التقدم. سيحاول المجتمع المساعدة.
يمكن أن تكون مشغلات الشارات معقدة. غالبًا ما تكون التحديثات “اليومية” كافية، ويمكنك تخطي الجوانب الأكثر تعقيدًا في الاستعلامات المُشغَّلة.
38 إعجابًا
