Report Dashboard - Modifiche ai Post

Questa è una versione SQL del report della dashboard per le modifiche ai post.

Questo report della dashboard mostra i post modificati in un intervallo di date specifico e include informazioni sull’editor, sull’autore del post e sul motivo per cui il post è stato modificato. Questo report è progettato per aiutare gli amministratori a monitorare e comprendere l’attività di modifica in corso nei loro forum, concentrandosi in particolare sui casi in cui utenti diversi dagli autori originali apportano modifiche ai post.

-- [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

Spiegazione della query SQL

  • Dichiarazione dei parametri:
    • La query accetta due parametri, :start_date e :end_date, che definiscono l’intervallo di date per il report. Entrambi i parametri di data accettano il formato data AAAA-MM-GG.
  • Selezione dei dati: L’istruzione SELECT specifica le colonne che appariranno nel report finale. Queste includono:
    • pr.created_at::date as day: La data in cui è stata creata una revisione del post, e viene convertita in tipo date per rimuovere la parte dell’ora.
    • pr.post_id: L’ID del post che è stato modificato.
    • pr.user_id AS editor_user_id: L’ID dell’utente che ha apportato la modifica. Viene rinominato come editor_user_id per distinguerlo dall’autore del post originale.
    • p.user_id AS author_user_id: L’ID dell’utente che ha creato il post originale, rinominato come author_user_id.
    • p.edit_reason: Il motivo fornito per la modifica, se presente.
  • Unione delle tabelle: La clausola FROM include un’istruzione JOIN che combina la tabella post_revisions (pr) con la tabella posts (p). L’unione viene eseguita sulla condizione che post_revisions.post_id corrisponda a posts.id, collegando così una revisione ai dettagli del post originale.
  • Filtri: La clausola WHERE applica diversi filtri ai dati:
    • pr.created_at BETWEEN :start_date AND :end_date: Include solo le revisioni dei post create nell’intervallo di date specificato dai parametri.
    • pr.user_id > 0: Assicura che l’editor sia un utente effettivo e non un’operazione di sistema (un user_id di 0 indica solitamente un’operazione di sistema).
    • pr.user_id <> p.user_id: Filtra le revisioni apportate dall’autore originale del post, concentrandosi solo sulle modifiche apportate da utenti diversi.
  • Ordinamento dei risultati: La clausola ORDER BY pr.created_at ASC ordina i risultati dal più vecchio al più recente in base al timestamp di quando è stata effettuata ciascuna revisione del post.

Risultati di esempio

giorno post editor_utente autore_utente motivo_modifica
2023-12-20 post_abc user1 user2 Motivo di esempio per la modifica
2023-12-21 post_dfg user3 user4 Motivo di esempio per la modifica
2023-12-24 post_xyz user5 user6 NULL
1 Mi Piace