Votación en publicaciones de Discourse

Creo que esto también. :slight_smile: Pero Sam insiste en que es algo real:

No parece que haya ninguna insignia para esto todavía.

Si tienes criterios específicos de insignias para las que te gustaría crear, deberías abrir un tema de Data & reporting para cada una. :+1:

Creo que un par de ejemplos podrían ser del tipo:

Obtener 10 votos en una respuesta de votación de publicación

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

O una un poco más matizada donde se tengan en cuenta los votos ‘a favor - en contra’:

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: Estas necesitarán más pruebas para asegurarnos de que funcionan según lo previsto. :slight_smile:

Sin embargo, una cosa a considerar es que el total es dinámico, por lo que un ‘10’ de hoy podría convertirse en un ‘5’ mañana si se agregan más votos negativos (para el segundo ejemplo). Y si la insignia se basa solo en votos a favor, como en el primer ejemplo, es posible que hayas obtenido 10, pero la interfaz de usuario solo muestra 5 cuando se suman los votos negativos.

5 Me gusta