Dashboard-Bericht - Beiträge bearbeiten

Dies ist eine SQL-Version des Dashboard-Berichts für Beitragsbearbeitungen.

Dieser Dashboard-Bericht zeigt Beiträge an, die über einen bestimmten Zeitraum bearbeitet wurden, und enthält Informationen über den Bearbeiter, den Autor des Beitrags und den Grund für die Bearbeitung des Beitrags. Dieser Bericht soll Administratoren helfen, die Bearbeitungsaktivitäten in ihren Foren zu überwachen und zu verstehen, insbesondere in Fällen, in denen andere Benutzer als die ursprünglichen Autoren Beiträge bearbeiten.

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

Erklärung der SQL-Abfrage

  • Parameterdeklaration:
    • Die Abfrage akzeptiert zwei Parameter, :start_date und :end_date, die den Datumsbereich für den Bericht definieren. Beide Datumsparameter akzeptieren das Datumsformat JJJJ-MM-TT.
  • Datenauswahl: Die SELECT-Anweisung gibt die Spalten an, die im endgültigen Bericht angezeigt werden. Dazu gehören:
    • pr.created_at::date as day: Das Datum, an dem eine Beitragsrevision erstellt wurde, und es wird in den Datentyp date umgewandelt, um den Zeitanteil zu entfernen.
    • pr.post_id: Die ID des Beitrags, der bearbeitet wurde.
    • pr.user_id AS editor_user_id: Die ID des Benutzers, der die Bearbeitung vorgenommen hat. Dies wird als editor_user_id bezeichnet, um ihn vom Autor des ursprünglichen Beitrags zu unterscheiden.
    • p.user_id AS author_user_id: Die ID des Benutzers, der den ursprünglichen Beitrag verfasst hat, bezeichnet als author_user_id.
    • p.edit_reason: Der Grund für die Bearbeitung, falls einer angegeben wurde.
  • Tabellen verbinden: Die FROM-Klausel enthält eine JOIN-Anweisung, die die Tabelle post_revisions (pr) mit der Tabelle posts (p) kombiniert. Die Verknüpfung erfolgt unter der Bedingung, dass post_revisions.post_id mit posts.id übereinstimmt, wodurch eine Revision mit den Details des ursprünglichen Beitrags verknüpft wird.
  • Filter: Die WHERE-Klausel wendet mehrere Filter auf die Daten an:
    • pr.created_at BETWEEN :start_date AND :end_date: Schließt nur Beitragsrevisionen ein, die innerhalb des durch die Parameter angegebenen Datumsbereichs erstellt wurden.
    • pr.user_id > 0: Stellt sicher, dass der Bearbeiter ein tatsächlicher Benutzer und keine Systemoperation ist (eine user_id von 0 zeigt normalerweise eine Systemoperation an).
    • pr.user_id <> p.user_id: Filtert Revisionen heraus, die vom ursprünglichen Autor des Beitrags vorgenommen wurden, und konzentriert sich nur auf Bearbeitungen, die von anderen Benutzern vorgenommen wurden.
  • Ergebnisse sortieren: Die Klausel ORDER BY pr.created_at ASC sortiert die Ergebnisse von ältesten zu neuesten basierend auf dem Zeitstempel, wann jede Beitragsrevision vorgenommen wurde.

Beispielergebnisse

Tag Beitrag Bearbeiter Autor Bearbeitungsgrund
2023-12-20 post_abc user1 user2 Beispiel Bearbeitungsgrund
2023-12-21 post_dfg user3 user4 Beispiel Bearbeitungsgrund
2023-12-24 post_xyz user5 user6 NULL
1 „Gefällt mir“