Badges pour X nombre de solutions créées ?

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.

Merci,

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
)
2 « J'aime »

Merci @JammyDodger,

J’aurais peut-être besoin d’un peu plus d’aide. Avez-vous de la documentation qui identifie certains des sélecteurs/champs pour une solution ?

Screen Shot 2022-06-06 at 11.05.29 AM

Pas de souci. :slightly_smiling_face: 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.

1 « J'aime »