Votação em posts do Discourse

Eu também acho isso. :slight_smile: Mas Sam está convicto de que é uma coisa:

Não parece que existam emblemas para isso ainda.

Se você tiver critérios específicos de emblema para algum que gostaria de criar, deve abrir um tópico Data & reporting para cada um. :+1:

Eu acho que alguns exemplos poderiam ser do tipo:

obter 10 votos em uma resposta de votação de postagem

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

Ou um pouco mais sutil, onde você contabilizou os votos ‘para cima - para baixo’:

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))

:red_exclamation_mark: Estes precisarão de mais testes para garantir que estão funcionando como pretendido. :slight_smile:

Embora uma coisa a considerar é que o total é dinâmico, então um ‘10’ hoje pode se tornar um ‘5’ amanhã se mais votos negativos forem adicionados (para o segundo exemplo). E se o emblema for apenas baseado em votos positivos como o primeiro exemplo, então você pode ter obtido 10, mas a interface do usuário mostra apenas 5 quando os votos negativos são totalizados.

5 curtidas