أعتقد أنك تريد شيئًا مثل:
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'