Salut, je me demandais s’il existait un modèle ou une requête standard pour attribuer des badges pour un certain nombre de solutions ? Par exemple, je réponds à environ 10 publications/questions et elles sont toutes marquées comme solutions. J’obtiens un badge pour cela et chaque badge correspondant pour 20, 30, 40 solutions marquées, etc.
J’ai essayé de chercher les requêtes standard mais elles ne semblaient pas être là. Je vois qu’il y a des requêtes personnalisées écrites ici.
Il y en a quelques-unes qui accompagnent le plugin que vous pouvez activer depuis la page /admin/badges (HelpDesk et TechSupport). Mais voici les requêtes si vous souhaitez les adapter :
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
)
Pas de souci. L’explorateur de données est vraiment bien pour essayer des requêtes avant de les ajouter en tant que badges SQL personnalisés (bien que celles de l’explorateur de données n’aient pas besoin de la partie backfill).
Cependant, je pense que la deuxième requête ci-dessus contient toutes les informations dont vous avez besoin. Les solutions sont conservées dans la table post_cutom_field sous is_accepted_answer dans la colonne name. Et cette deuxième requête accorde le badge TechSupport pour 10 solutions (HAVING COUNT(*) > 9), donc pour celles que vous voulez de l’OP, il vous suffit de copier cette requête et de changer le nombre du bas pour 19, 29, 39, et ainsi de suite.