Ciao, mi stavo chiedendo se ci fosse un modello o una query standard per assegnare badge per un certo numero di soluzioni? Ad esempio, rispondo a circa 10 post/domande e tutti vengono contrassegnati come soluzioni. Ricevo un badge per questo e ogni badge corrispondente per 20, 30, 40 soluzioni contrassegnate, ecc.
Ho provato a cercare le query standard ma non mi sembrava ci fossero. Vedo che ci sono alcune query personalizzate scritte qui.
Ci sono un paio che vengono forniti con il plugin che puoi abilitare dalla pagina /admin/badges (HelpDesk e TechSupport). Ma queste sono le query se vuoi adattarle:
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
)
Nessun problema. Il data explorer è ottimo per provare le query prima di aggiungerle come custom SQL badges (anche se quelle del data explorer non necessitano della parte backfill).
Anche se penso che la seconda query sopra contenga tutte le informazioni di cui hai bisogno. Le soluzioni sono conservate nella tabella post_cutom_field come is_accepted_answer nella colonna name. E quella seconda query concede il badge TechSupport per 10 soluzioni (HAVING COUNT(*) > 9), quindi per quelle che vuoi dall’OP devi solo copiare quella query e cambiare il numero in basso in 19, 29, 39 e così via.