Votazione dei Post di Discourse

Penso anche questo. :slight_smile: Ma Sam è irremovibile sul fatto che sia una cosa:

Non sembra che ci siano ancora badge per questo.

Se hai criteri specifici per i badge che vorresti creare, dovresti aprire un argomento Data & reporting per ciascuno. :+1:

Penso che un paio di esempi potrebbero essere sulla falsariga di:

ottieni 10 voti su una risposta di voto di un post

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

Oppure uno leggermente più sfumato in cui si tiene conto dei voti ‘su - giù’:

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: Questi richiederanno ulteriori test per assicurarsi che funzionino come previsto. :slight_smile:

Anche se una cosa da considerare è che il totale è dinamico, quindi un ‘10’ oggi potrebbe diventare un ‘5’ domani se vengono aggiunti altri voti negativi (per il secondo esempio). E se il badge si basa solo sui voti positivi come nel primo esempio, allora potresti averne ottenuti 10, ma l’interfaccia utente ne mostra solo 5 quando vengono sommati i voti negativi.

5 Mi Piace