Pesquisa de Mensagem Direta (intervalo)

Um mergulho profundo em todas as mensagens enviadas e recebidas por um usuário dentro do período de tempo especificado.

-- [params]
-- user_id :user
-- string :interval = 1 month

SELECT 
    chat_channel_id,
    user_id,
    message,
    created_at AS reltime$time,
    created_at 
FROM chat_messages
WHERE chat_channel_id IN (
       SELECT cc.id
       FROM chat_channels cc
       JOIN chat_messages cm ON cm.chat_channel_id = cc.id
       WHERE cc.chatable_type = 'DirectMessage'
       AND cm.user_id = :user
   )
AND created_at::date > CURRENT_TIMESTAMP - INTERVAL :interval
ORDER BY chat_channel_id DESC, created_at ASC
2 curtidas

Este ainda está funcional, mas notei que ele precisa de um pequeno ajuste para acomodar algumas alterações na tabela que foram feitas há algum tempo. Isso afeta apenas os IDs dos canais, portanto, não é um problema crítico.