Hola, me preguntaba si había alguna plantilla o consulta estándar para otorgar insignias por una cierta cantidad de soluciones? Por ejemplo, respondo a unas 10 publicaciones/preguntas y todas son marcadas como soluciones. Obtengo una insignia por esto y cada insignia correspondiente por 20, 30, 40 soluciones marcadas, etc.
Intenté buscar las consultas estándar pero no parecieron estar ahí. Veo que hay algunas consultas personalizadas escritas aquí.
Hay un par que vienen con el plugin que puedes habilitar desde la página /admin/badges (HelpDesk y TechSupport). Pero aquí están las consultas si quieres adaptarlas:
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
)
No te preocupes. El explorador de datos es realmente bueno para probar consultas antes de agregarlas como insignias SQL personalizadas (aunque las del explorador de datos no necesitan la parte de backfill).
Aunque creo que la segunda consulta anterior tiene toda la información que necesitas. Las soluciones se guardan en la tabla post_cutom_field como is_accepted_answer en la columna name. Y esa segunda consulta otorga la insignia de Soporte Técnico por 10 soluciones (HAVING COUNT(*) > 9), por lo que para las que quieres del OP solo necesitas copiar esa consulta y cambiar el número inferior a 19, 29, 39, y así sucesivamente.