L’un de nos utilisateurs possédait 5 badges « Réponse appréciée » (100 posts aimés et 100 likes donnés). Ensuite, nous avons déplacé certains sujets vers une catégorie privée, et maintenant il n’en a plus que 3. Il semble que la requête de badge ne compte pas les likes donnés ou reçus sur les sujets déplacés, peut-être parce qu’ils ont été déplacés ou parce qu’ils sont désormais privés.
En déboguant cela, j’ai copié la requête de badge dans Data Explorer :
select p.user_id, p.id post_id, current_timestamp granted_at
from badge_posts p
where p.post_number > 1
and p.like_count >= 10
La requête ci-dessus ne retourne que 3 résultats pour l’utilisateur, alors qu’il devrait y en avoir 5. J’ai remarqué qu’elle utilise la table « badge_posts ». Je ne trouve pas la table badge_posts dans l’arbre de vue de Data Explorer. J’ai donc remplacé « badge_posts » par « posts », et elle retourne alors 5 comme prévu.
D’où provient la table « badge_posts », et la requête de badge ne devrait-elle pas utiliser la table « posts » à la place ?
Les messages de la vue badge_posts sont les messages visibles qui ne se trouvent pas dans des catégories à lecture restreinte. Lorsque vous avez déplacé vos sujets vers une catégorie privée, vous avez retiré leurs messages de la vue badge_posts.
Notre catégorie privée n’est pas vraiment privée : il suffit d’accepter une politique pour y accéder. Je souhaiterais donc inclure les publications de cette catégorie. Je pense que je devrais créer un badge personnalisé similaire à « Bonne réponse » (ainsi que « Bonne réponse » et « Excellente réponse »), mais en utilisant les publications plutôt que badge_posts.