Notre communauté est centrée sur les sujets épinglés et les sujets épinglés globalement. Malheureusement, il n’existe aucun comptage de statistiques à ce sujet sur les pages de profil des utilisateurs, et il semble que les épingles/épingles globales ne soient stockées de manière systématique nulle part dans la base de données.
Compte tenu de cela, je cherche un moyen d’accorder au moins des badges tels que « Premier épinglé », « 10 épinglés », « 100 épinglés », ainsi que pour les sujets épinglés globalement.
Pourriez-vous, s’il vous plaît, m’aider avec le SQL des badges pour ce type de badges ?
Mon point de départ :
SELECT p.user_id, min(p.created_at) granted_at, MIN(p.id) post_id
FROM badge_posts p
JOIN topics t ON t.id = p.topic_id
WHERE t.unpinned IS NOT NULL
GROUP BY p.user_id
HAVING count(*) > 5
Mais cela me donne l’erreur :
ERROR: column t.unpinned does not exist
LINE 6: WHERE t.unpinned IS NOT NULL
Je suppose que je dois utiliser unpinned, car il n’y a pas d’autre point de données qui reste associé aux sujets ayant été épinglés, à ma connaissance. Ou pourrais-je potentiellement utiliser post_actions ici ?
Ou peut-être rechercher le premier message d’un sujet par un utilisateur du personnel/du système contenant « épinglé il y a … » pour compter ? action_code => pinned.disabled
Mise à jour : Cela semble fonctionner d’une manière ou d’une autre…
SELECT t.user_id, current_timestamp granted_at
FROM badge_posts p
INNER JOIN topics t on t.id = p.topic_id
WHERE p.action_code ilike 'pinned.disabled'
GROUP BY t.user_id
HAVING count(*) > 0
Mais je ne suis pas sûr que ce soit la meilleure approche, et comme un message peut être épinglé et désépinglé plusieurs fois… je ne suis pas sûr que cette requête ne capture qu’UN seul pinned.disabled par topic.id.
Une aide d’un wizard SQL des badges serait appréciée.
Ou également la possibilité de stocker systématiquement les épingles dans la base de données, comme les « likes », etc., à l’avenir, et de les afficher dans la section Statistiques du profil de l’utilisateur, avec des liens « ÉPINGLÉ ». Parce que si un sujet est épinglé, c’est une appréciation bien plus grande par rapport aux likes et devrait être prise en compte.
