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
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.