هل توجد طريقة لتوسيع هذه الميزة قليلاً وإرسال إشعار إلى مستخدم (أو مجموعة) عند نشر إشعار ‘أول مرة’ أو ‘عودة’؟
لدينا شخص يرغب في تولّي دور ‘لجنة الترحيب’ لكنه لا يقرأ كل منشور في منتدى كبير. سيكون من الرائع أن يكون ذلك بمثابة إشعار له.
هل توجد طريقة لتوسيع هذه الميزة قليلاً وإرسال إشعار إلى مستخدم (أو مجموعة) عند نشر إشعار ‘أول مرة’ أو ‘عودة’؟
لدينا شخص يرغب في تولّي دور ‘لجنة الترحيب’ لكنه لا يقرأ كل منشور في منتدى كبير. سيكون من الرائع أن يكون ذلك بمثابة إشعار له.
أجيب على سؤالي بنفسي، إليك استعلام Data Explorer لاستخراج المستخدمين الذين قاموا بأول مشاركة لهم مؤخراً:
-- [params]
-- date :start_date
SELECT u.id AS user_id, p.id AS post_id, p.created_at
FROM users u
JOIN user_stats us
ON u.id = us.user_id
JOIN posts p
ON u.id = p.user_id
WHERE p.created_at = us.first_post_created_at
AND us.first_post_created_at BETWEEN :start_date::date AND NOW()
ORDER BY us.first_post_created_at desc
هذا تعديل طفيف على استعلام من @tshenry:
يمكن تحسينه بإضافة فترة زمنية ثابتة للنظر فيها إلى الوراء، مثل أسبوع أو شهر، لكنني لم أستطع إيجاد طريقة لجعل NOW() - 7 أو ما شابه ذلك يعمل.
كما سيكون رائعاً استبعاد الرسائل الخاصة (PMs) وفقاً لاستعلام آخر لـ @tshenry، لكن بما أنني مبتدئ في SQL، فسأستغرق وقتاً طويلاً لأفهم كيفية تنفيذ ذلك.
أعتقد أنك تريد شيئًا مثل:
AND us.first_post_created_at > NOW() - INTERVAL '7 DAYS'
(توثيق PostgreSQL للتاريخ/الوقت)
للاستبعاد الرسائل الخاصة، تحتاج إلى الربط مع جدول topics (متبعًا المفتاح الأجنبي posts.topic_id) والتحقق من عمود archetype. أضف هذا قبل جملة WHERE:
JOIN topics t ON p.topic_id = t.id
…وهذا قبل جملة ORDER BY:
AND t.archetype = 'regular'
إشعارات المنشورات تُخزَّن فعليًا في جدول post_custom_fields، لذا يمكنك الحصول على قائمة أدق للمنشورات على النحو التالي:
-- [params]
-- int :days_ago = 7
SELECT p.created_at,
p.id AS post_id,
p.user_id,
pcf.value AS "نوع الإشعار"
FROM post_custom_fields pcf
INNER JOIN posts p ON pcf.post_id = p.id
INNER JOIN topics t ON p.topic_id = t.id
WHERE pcf.name = 'notice_type'
AND p.created_at > NOW() - INTERVAL ':days_ago days'
AND t.archetype = 'regular'
ORDER BY p.created_at ASC
رائع جدًا! شكرًا لك، هذا أفضل بكثير.
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.