Penso anche questo.
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. ![]()
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))
Questi richiederanno ulteriori test per assicurarsi che funzionino come previsto. ![]()
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.