Informe del Panel - Ediciones de Publicaciones

Esta es una versión SQL del Informe del Panel de Control para Ediciones de Publicaciones.

Este informe del panel de control muestra las publicaciones que fueron editadas durante un rango de fechas específico, e incluye información sobre el editor, el autor de la publicación y la razón por la que se editó la publicación. Este informe está diseñado para ayudar a los administradores a monitorear y comprender la actividad de edición que ocurre dentro de sus foros, centrándose particularmente en los casos en que usuarios distintos de los autores originales realizan ediciones en las publicaciones.

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

Explicación de la Consulta SQL

  • Declaración de Parámetros:
    • La consulta acepta dos parámetros, :start_date y :end_date, que definen el rango de fechas para el informe. Ambos parámetros de fecha aceptan el formato de fecha YYYY-MM-DD.
  • Selección de Datos: La declaración SELECT especifica las columnas que aparecerán en el informe final. Estas incluyen:
    • pr.created_at::date as day: La fecha en que se creó una revisión de publicación, y se convierte a tipo date para eliminar la parte de la hora.
    • pr.post_id: El ID de la publicación que fue editada.
    • pr.user_id AS editor_user_id: El ID del usuario que realizó la edición. Se le da el alias editor_user_id para diferenciarlo del autor de la publicación original.
    • p.user_id AS author_user_id: El ID del usuario que creó la publicación original, con el alias author_user_id.
    • p.edit_reason: La razón proporcionada para la edición, si se dio alguna.
  • Unión de Tablas: La cláusula FROM incluye una declaración JOIN que combina la tabla post_revisions (pr) con la tabla posts (p). La unión se realiza bajo la condición de que post_revisions.post_id coincida con posts.id, vinculando así una revisión con los detalles de la publicación original.
  • Filtros: La cláusula WHERE aplica varios filtros a los datos:
    • pr.created_at BETWEEN :start_date AND :end_date: Solo incluye revisiones de publicaciones creadas dentro del rango de fechas especificado por los parámetros.
    • pr.user_id > 0: Asegura que el editor sea un usuario real y no una operación del sistema (un user_id de 0 generalmente indica una operación del sistema).
    • pr.user_id <> p.user_id: Filtra las revisiones realizadas por el autor original de la publicación, centrándose solo en las ediciones realizadas por usuarios diferentes.
  • Ordenación de Resultados: La cláusula ORDER BY pr.created_at ASC ordena los resultados de más antiguo a más reciente según la marca de tiempo de cuándo se realizó cada revisión de publicación.

Resultados de Ejemplo

día publicación editor_usuario autor_usuario razón_edición
2023-12-20 post_abc usuario1 usuario2 Razón de Edición de Ejemplo
2023-12-21 post_dfg usuario3 usuario4 Razón de Edición de Ejemplo
2023-12-24 post_xyz usuario5 usuario6 NULL
1 me gusta