Utiliser les réactions pour attribuer des badges

J’en ai un avec lequel je jouais, bien que je l’aie mis de côté pour le regarder avec des yeux neufs et que je n’y sois pas encore revenu, il pourrait donc nécessiter quelques ajustements. Il s’agit d’attribuer un badge basé sur l’obtention d’au moins 10 publications avec la réaction :chefs_kiss: donnée par un membre du groupe ‘data-team’ pour les publications dans la catégorie Data & reporting :

SELECT p.user_id, MIN(p.created_at) granted_at
FROM badge_posts p
  JOIN topic_tags tt ON tt.topic_id = p.topic_id
WHERE tt.tag_id = 615
  AND EXISTS (
         SELECT 1
            FROM discourse_reactions_reactions dr 
             JOIN discourse_reactions_reaction_users dru ON dr.id = dru.reaction_id
             JOIN group_users gu ON gu.user_id = dru.user_id
            WHERE dr.post_id = p.id
              AND dr.reaction_value = 'chefs_kiss'
              AND gu.group_id = 175
       )
 GROUP BY p.user_id
HAVING COUNT(*) >= 10

Bien que je n’aie pas été satisfait de l’utilisation de MIN car elle donnait la mauvaise date d’attribution.

Il y a beaucoup de critères, et c’est automatique, ce qui, je pense, le place dans le registre des éléments plus compliqués. Je pense qu’un système plus simple pourrait être beaucoup plus réalisable sans trop d’efforts.