SQLite удалить строки два столбца перекрестно равными - PullRequest
0 голосов
/ 14 июля 2020

Я разрабатываю приложение чата 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?
)

Поддельные данные, чтобы привести пример:

enter image description here

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 одновременно. Хочу исключить этот случай.

...