Olá, eu estava me perguntando se havia algum modelo ou consulta padrão para conceder emblemas por uma certa quantidade de soluções? Por exemplo, eu respondo a cerca de 10 posts/perguntas e todos eles são marcados como soluções. Eu recebo um emblema por isso e cada emblema correspondente para 20, 30, 40 soluções marcadas, etc.
Tentei procurar as consultas padrão, mas não pareciam estar lá. Vejo que existem algumas consultas personalizadas escritas aqui.
Existem alguns que vêm com o plugin que você pode habilitar na página /admin/badges (HelpDesk e TechSupport). Mas aqui estão as consultas se você quiser adaptá-las:
SELECT p.user_id, p.id post_id, p.updated_at granted_at
FROM badge_posts p
WHERE p.post_number > 1 AND
p.id IN (
SELECT post_id FROM (
SELECT pc.post_id, row_number()
OVER (PARTITION BY p1.user_id ORDER BY pc.created_at) as rnum
FROM post_custom_fields pc
JOIN badge_posts p1 ON p1.id = pc.post_id
JOIN topics t1 ON p1.topic_id = t1.id
WHERE name = 'is_accepted_answer' AND
p1.user_id <> t1.user_id AND
(
:backfill OR
p1.user_id IN (
select user_id from posts where p1.id IN (:post_ids)
)
)
) X WHERE rnum = 1)
SELECT id user_id, current_timestamp granted_at
FROM users
WHERE id IN (
SELECT p1.user_id
FROM post_custom_fields pc
JOIN badge_posts p1 ON p1.id = pc.post_id
JOIN topics t1 ON p1.topic_id = t1.id
WHERE p1.user_id <> t1.user_id AND
name = 'is_accepted_answer' AND
p1.user_id IN (
SELECT user_id
FROM posts
WHERE :backfill OR p1.id IN (:post_ids)
)
GROUP BY p1.user_id
HAVING COUNT(*) > 9
)
Sem problemas. O data explorer é realmente bom para experimentar consultas antes de adicioná-las como custom SQL badges (embora as do data explorer não precisem da parte backfill).
Embora eu ache que a segunda consulta acima tem todas as informações de que você precisa. As soluções são mantidas na tabela post_cutom_field como is_accepted_answer na coluna name. E essa segunda consulta concede o badge TechSupport para 10 soluções (HAVING COUNT(*) > 9), então para as que você quer do OP, você só precisa copiar essa consulta e mudar o número inferior para 19, 29, 39 e assim por diante.