Usare le Reactions per assegnare badge

Ne ho uno con cui stavo giocando, anche se l’ho messo da parte per guardarlo con occhi freschi e non ci sono ancora tornato, quindi potrebbe aver bisogno di qualche ritocco. Serve ad assegnare un badge basato sull’ottenimento di almeno 10 post con la reazione :chefs_kiss: data da un membro del gruppo ‘data-team’ per post nella categoria 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

Anche se non ero soddisfatto dell’uso di MIN perché dava la data di assegnazione sbagliata.

Ci sono molti criteri, ed è automatico, il che penso lo spinga verso l’estremità più complicata. Penso che uno più semplice potrebbe essere molto più realizzabile senza troppi sforzi.