Ограничение уровней доверия для указанной группы

Хорошо, у меня есть этот бейдж lurkers, и он сейчас работает:

-- Lurkers: пользователи, которые просматривали темы, но не отвечали в последние 30 дней,
-- но перестают получать бейдж (и лишаются его), как только получат ≥3 принятых ответа
WITH recent_readers AS (
  SELECT DISTINCT user_id
  FROM user_visits
  WHERE visited_at > CURRENT_DATE - INTERVAL '30 days'
    AND posts_read > 0
),
recent_repliers AS (
  SELECT DISTINCT user_id
  FROM posts
  WHERE created_at > CURRENT_DATE - INTERVAL '30 days'
    AND post_number > 11
    AND deleted_at IS NULL
),
recent_solutions AS (
  -- пользователи, чьи темы получили ≥3 принятых ответа за последние 30 дней
  SELECT t.user_id
  FROM posts p
  JOIN post_custom_fields pc
    ON pc.post_id = p.id
   AND pc.name = 'is_accepted_answer'
  JOIN topics t
    ON t.id = p.topic_id
  WHERE p.created_at > CURRENT_DATE - INTERVAL '30 days'
    -- исключите самопринятие, если нужны только ответы от других:
    AND p.user_id <> t.user_id
  GROUP BY t.user_id
  HAVING COUNT(*) >= 3
)
SELECT
  u.id        AS user_id,
  u.username_lower AS username,
  u.last_seen_at,
  CURRENT_TIMESTAMP AS granted_at
FROM users u
JOIN recent_readers rr
  ON rr.user_id = u.id
LEFT JOIN recent_repliers rp
  ON rp.user_id = u.id
LEFT JOIN recent_solutions rs
  ON rs.user_id = u.id
WHERE rp.user_id IS NULL         -- не отвечал в последние 30 дней
  AND rs.user_id IS NULL         -- ещё не получил 3 принятых ответа за последние 30 дней
  AND u.active = TRUE
ORDER BY u.last_seen_at DESC

Я уверен, что его можно улучшить, и я ещё не закончил тестирование, но моя просьба здесь — добавить ограничение по уровню доверия (до trust_level_1), и я понимаю, что для этого потребуется вызов API или плагин.

Эта инициатива ищет разработчика плагина. Пожалуйста, отправьте коммерческое предложение, я быстро его рассмотрю, оплата и разработка будут оперативными.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.