A self hosted chat application with end-to-end encrypted messaging.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

36 lines
1.6 KiB

5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
  1. package org.ros.chatto.repository;
  2. import java.util.List;
  3. import org.ros.chatto.model.ChatMessage;
  4. import org.springframework.data.domain.PageRequest;
  5. import org.springframework.data.jpa.repository.JpaRepository;
  6. import org.springframework.data.jpa.repository.Query;
  7. import org.springframework.stereotype.Repository;
  8. import java.time.Instant;
  9. @Repository
  10. public interface ChatMessageRepository
  11. extends JpaRepository<ChatMessage, Long> {
  12. @Query("select m from ChatMessage m join fetch m.messageCipher mc join fetch m.toUser tu join fetch m.fromUser fu "
  13. + "where (tu.userName = ?1 or tu.userName = ?2) and "
  14. + "(fu.userName = ?1 or fu.userName = ?2) order by m.messageTime asc")
  15. public List<ChatMessage> getAllMessages(String fromUser, String toUser);
  16. @Query("select m from ChatMessage m join fetch m.messageCipher mc join fetch m.toUser tu join fetch m.fromUser fu "
  17. + "where (tu.userName = ?1 or tu.userName = ?2) and "
  18. + "(fu.userName = ?1 or fu.userName = ?2) and (m.messageTime > ?3) order by m.messageTime asc")
  19. public List<ChatMessage> getNewMessages(String fromUser, String toUser,
  20. Instant lastMessageTime);
  21. @Query("select m from ChatMessage m join fetch m.messageCipher mc join fetch m.toUser tu join fetch m.fromUser fu "
  22. + "where (tu.userName = ?1 or tu.userName = ?2) and "
  23. + "(fu.userName = ?1 or fu.userName = ?2) order by m.messageTime desc")
  24. public List<ChatMessage> getAllMessages(String fromUser, String toUser,
  25. PageRequest pageRequest);
  26. @Query("select count(c) from ChatMessage c")
  27. public Long totalMessages();
  28. @Query("select count(c) from ChatMessage c where c.messageTime=?1")
  29. public Long messagesOnDate(Instant date);
  30. }