findLatestMessagesByTenant

@Query(value = " SELECT * FROM flow_messages m WHERE m.id IN ( SELECT id FROM ( SELECT id, ROW_NUMBER() OVER (PARTITION BY contact_id ORDER BY created_at DESC) as rn FROM flow_messages WHERE tenant_id = :tenantId ) t WHERE t.rn = 1 ) ORDER BY m.created_at DESC ", nativeQuery = true)
abstract fun findLatestMessagesByTenant(tenantId: String, pageable: Pageable): Page<Message>(source)

Busca a última mensagem de cada contato do Tenant. Essa query usa Window Function (ROW_NUMBER) para performance extrema no PostgreSQL. Retorna apenas a mensagem mais recente de cada contact_id.