Я разрабатываю приложение чата android. Я использую Room (библиотека сохраняемости SQLite) для хранения данных. У меня есть две таблицы: Друзья и Сообщения. Я хочу отображать последнее сообщение для каждого разговора.
Таблица друзей:
data class FriendsModel(
@PrimaryKey
@SerialName("friendID") var friendID: String,
@SerialName("friendName") var friendName: String?,
@SerialName("friendPublicKey") var friendPublicKey: String?,
@SerialName("sharedSecretKey") var sharedSecretKey: String?
)
Таблица сообщений:
data class MessageModel(
@PrimaryKey(autoGenerate = true)
@SerialName("id") var _id: Int = 0,
@SerialName("from") var from: String,
@SerialName("to") var to :String,
@SerialName("message") var message: String?,
@SerialName("date") var date: String?
)
Поддельные данные, чтобы привести пример:
Notice User1 sends 3 messages to User2, as well as User2 sends 3 messages to User1. I want to get every latest message on every conversation. It doesn't matter who send the last message ('from' or 'to' fields)
Return should be something like this:
введите описание изображения здесь
Я попытался отсортировать по дате и сгруппировать по от и до . Но он дает мне последнее сообщение, отправленное пользователем User1 пользователю User2 и пользователем User2 пользователю User1 одновременно. Хочу исключить этот случай.