Message Repository
Functions
Link copied to clipboard
@Query(value = "SELECT COUNT(m) FROM Message m WHERE m.contactId = :contactId AND m.direction = 'INBOUND' AND m.status != 'READ'" )
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
abstract fun findByContactIdOrderByCreatedAtDesc(contactId: String, pageable: Pageable): Page<Message>
Link copied to clipboard
Link copied to clipboard
@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 )
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.
Link copied to clipboard
Link copied to clipboard
@Modifying
@Query(value = "UPDATE Message m SET m.status = 'READ' WHERE m.contactId = :contactId AND m.direction = 'INBOUND' AND m.status != 'READ'" )
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard