Я тоже так думаю.
Но Сэм категоричен в том, что это так:
Похоже, что пока таких бейджей ещё нет.
Если у вас есть конкретные критерии для бейджей, которые вы хотели бы создать, стоит открыть тему в канале #data-reporting для каждого из них. ![]()
Я думаю, несколько примеров могут выглядеть примерно так:
Получить 10 голосов на ответ в теме с голосованием за посты
SELECT p.user_id, p.created_at AS granted_at, p.id AS post_id
FROM post_voting_votes pvv
JOIN posts p ON p.id = pvv.votable_id
WHERE pvv.direction = 'up'
AND p.post_number <> 1
AND (:backfill OR p.id IN (:post_ids))
GROUP BY p.user_id, p.id
HAVING COUNT(*) >= 10
Или более сложный вариант, где учитывается разница между «вверх» и «вниз» голосами:
WITH vote_totals AS (
SELECT
p.user_id,
p.id AS post_id,
p.created_at AS granted_at,
(COUNT(*) FILTER (WHERE pvv.direction = 'up') - COUNT(*) FILTER (WHERE pvv.direction = 'down')) AS total
FROM post_voting_votes pvv
JOIN posts p ON p.id = pvv.votable_id
WHERE p.post_number <> 1
GROUP BY 1, 2
)
SELECT *
FROM vote_totals
WHERE total >= 10
AND (:backfill OR post_id IN (:post_ids))
Эти запросы потребуют дополнительного тестирования, чтобы убедиться, что они работают как задумано. ![]()
Однако стоит учесть, что итоговое значение динамично: сегодня «10» завтра может превратиться в «5», если будут добавлены больше голосов «вниз» (во втором примере). А если бейдж основан только на голосах «вверх», как в первом примере, то вы могли получить 10, но в интерфейсе будет показано только 5, когда учтутся голоса «вниз».