Rapport de tableau de bord - Modifications de publication

Ceci est une version SQL du rapport de tableau de bord pour les modifications de publication.

Ce rapport de tableau de bord affiche les publications qui ont été modifiées sur une période donnée, et inclut des informations sur l’éditeur, l’auteur de la publication et la raison pour laquelle la publication a été modifiée. Ce rapport est conçu pour aider les administrateurs à surveiller et à comprendre l’activité de modification au sein de leurs forums, en se concentrant particulièrement sur les cas où des utilisateurs autres que les auteurs d’origine modifient des publications.

-- [params]
-- date :start_date = 2023-12-16
-- date :end_date = 2024-01-16

SELECT
    pr.created_at::date as day,
    pr.post_id as post_id,
    pr.user_id AS editor_user_id,
    p.user_id AS author_user_id,
    p.edit_reason
FROM post_revisions pr
JOIN posts p ON p.id = pr.post_id
WHERE pr.created_at BETWEEN :start_date AND :end_date
AND pr.user_id > 0
AND pr.user_id <> p.user_id
ORDER BY pr.created_at ASC

Explication de la requête SQL

  • Déclaration des paramètres :
    • La requête accepte deux paramètres, :start_date et :end_date, qui définissent la plage de dates pour le rapport. Les deux paramètres de date acceptent le format de date AAAA-MM-JJ.
  • Sélection des données : L’instruction SELECT spécifie les colonnes qui apparaîtront dans le rapport final. Celles-ci incluent :
    • pr.created_at::date as day : La date à laquelle une révision de publication a été créée, et elle est convertie en type date pour supprimer l’heure.
    • pr.post_id : L’ID de la publication qui a été modifiée.
    • pr.user_id AS editor_user_id : L’ID de l’utilisateur qui a effectué la modification. Ceci est aliasé en editor_user_id pour le différencier de l’auteur de la publication d’origine.
    • p.user_id AS author_user_id : L’ID de l’utilisateur qui a rédigé la publication d’origine, aliasé en author_user_id.
    • p.edit_reason : La raison fournie pour la modification, si une raison a été donnée.
  • Jointure des tables : La clause FROM inclut une instruction JOIN qui combine la table post_revisions (pr) avec la table posts (p). La jointure est effectuée sur la condition que post_revisions.post_id corresponde à posts.id, reliant ainsi une révision aux détails de la publication d’origine.
  • Filtres : La clause WHERE applique plusieurs filtres aux données :
    • pr.created_at BETWEEN :start_date AND :end_date : Inclut uniquement les révisions de publication créées dans la plage de dates spécifiée par les paramètres.
    • pr.user_id > 0 : Garantit que l’éditeur est un utilisateur réel et non une opération système (un user_id de 0 indique généralement une opération système).
    • pr.user_id <> p.user_id : Filtre les révisions effectuées par l’auteur d’origine de la publication, se concentrant uniquement sur les modifications apportées par d’autres utilisateurs.
  • Ordonnancement des résultats : La clause ORDER BY pr.created_at ASC ordonne les résultats du plus ancien au plus récent en fonction de l’horodatage de chaque révision de publication.

Exemple de résultats

jour publication éditeur auteur raison_modification
2023-12-20 post_abc user1 user2 Exemple de raison de modification
2023-12-21 post_dfg user3 user4 Exemple de raison de modification
2023-12-24 post_xyz user5 user6 NULL
1 « J'aime »