Relatório do Painel - Edições de Postagem

Esta é uma versão SQL do Relatório de Painel para Edições de Postagens.

Este relatório de painel mostra postagens que foram editadas em um intervalo de datas específico e inclui informações sobre o editor, o autor da postagem e o motivo pelo qual a postagem foi editada. Este relatório foi projetado para ajudar os administradores a monitorar e entender a atividade de edição que ocorre em seus fóruns, com foco particular em casos em que usuários que não sejam os autores originais fazem edições em postagens.

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

Explicação da Consulta SQL

  • Declaração de Parâmetros:
    • A consulta aceita dois parâmetros, :start_date e :end_date, que definem o intervalo de datas para o relatório. Ambos os parâmetros de data aceitam o formato de data AAAA-MM-DD.
  • Seleção de Dados: A instrução SELECT especifica as colunas que aparecerão no relatório final. Estas incluem:
    • pr.created_at::date as day: A data em que uma revisão de postagem foi criada, e é convertida para o tipo date para remover a parte do tempo.
    • pr.post_id: O ID da postagem que foi editada.
    • pr.user_id AS editor_user_id: O ID do usuário que fez a edição. Este é apelidado de editor_user_id para diferenciá-lo do autor da postagem original.
    • p.user_id AS author_user_id: O ID do usuário que escreveu a postagem original, apelidado de author_user_id.
    • p.edit_reason: O motivo fornecido para a edição, se algum foi dado.
  • Junção de Tabelas: A cláusula FROM inclui uma instrução JOIN que combina a tabela post_revisions (pr) com a tabela posts (p). A junção é feita na condição de que post_revisions.post_id corresponda a posts.id, ligando assim uma revisão aos detalhes da postagem original.
  • Filtros: A cláusula WHERE aplica vários filtros aos dados:
    • pr.created_at BETWEEN :start_date AND :end_date: Inclui apenas revisões de postagens criadas dentro do intervalo de datas especificado pelos parâmetros.
    • pr.user_id > 0: Garante que o editor seja um usuário real e não uma operação do sistema (um user_id de 0 geralmente indica uma operação do sistema).
    • pr.user_id <> p.user_id: Filtra revisões feitas pelo autor original da postagem, focando apenas em edições feitas por usuários diferentes.
  • Ordenação de Resultados: A cláusula ORDER BY pr.created_at ASC ordena os resultados do mais antigo para o mais recente com base no carimbo de data/hora de quando cada revisão de postagem foi feita.

Resultados de Exemplo

dia post editor_user author_user edit_reason
2023-12-20 post_abc user1 user2 Example Edit Reason
2023-12-21 post_dfg user3 user4 Example Edit Reason
2023-12-24 post_xyz user5 user6 NULL
1 curtida