Je pense aussi.
Mais Sam est catégorique sur le fait que c’est une chose :
Il ne semble pas y avoir de badges pour cela pour le moment.
Si vous avez des critères de badge spécifiques pour ceux que vous aimeriez créer, vous devriez ouvrir un sujet Data & reporting pour chacun d’eux. ![]()
Je pense que quelques exemples pourraient être dans le genre de :
obtenir 10 votes sur une réponse de vote de 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
Ou un exemple un peu plus nuancé où vous tenez compte des votes « pour - contre » :
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))
Ceux-ci devront être testés davantage pour s’assurer qu’ils fonctionnent comme prévu. ![]()
Cependant, il faut considérer que le total est dynamique, donc un « 10 » aujourd’hui pourrait devenir un « 5 » demain si plus de votes négatifs sont ajoutés (pour le second exemple). Et si le badge est juste basé sur les votes positifs comme dans le premier exemple, alors vous pourriez en avoir obtenu 10, mais l’interface utilisateur n’en affiche que 5 lorsque les votes négatifs sont totalisés.