From 61c321cd042621acafed4cbae828433bb3c45e03 Mon Sep 17 00:00:00 2001 From: Kgothatso Ngako Date: Sat, 6 Jun 2026 00:29:21 +0200 Subject: [PATCH] Use a transaction on Dao that return intermediate objects --- .../ac/cord/auxiliary/compose/database/dao/ChatMessageDao.kt | 3 +++ .../ac/cord/auxiliary/compose/database/dao/ChatRoomDao.kt | 3 +++ 2 files changed, 6 insertions(+) diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/ChatMessageDao.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/ChatMessageDao.kt index bff2aa35..4551c0d6 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/ChatMessageDao.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/ChatMessageDao.kt @@ -5,14 +5,17 @@ import ac.cord.auxiliary.compose.database.model.Relay import ac.cord.auxiliary.compose.database.model.intermdiate.LocalChatMessage import androidx.room3.Dao import androidx.room3.Query +import androidx.room3.Transaction import androidx.room3.Upsert import kotlinx.coroutines.flow.Flow @Dao interface ChatMessageDao { + @Transaction @Query("SELECT * FROM ChatMessage WHERE chatRoomId = :chatRoomId ORDER BY createdAt DESC") fun observeChatMessagesByChatRoomId(chatRoomId: String): Flow> + @Transaction @Query("SELECT * FROM ChatMessage WHERE chatRoomId = :chatRoomId ORDER BY createdAt DESC") fun getChatMessagesByChatRoomId(chatRoomId: String): List diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/ChatRoomDao.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/ChatRoomDao.kt index 8c1a847d..5e926ed2 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/ChatRoomDao.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/database/dao/ChatRoomDao.kt @@ -4,13 +4,16 @@ import ac.cord.auxiliary.compose.database.model.ChatRoom import ac.cord.auxiliary.compose.database.model.intermdiate.LocalChatRoom import androidx.room3.Dao import androidx.room3.Query +import androidx.room3.Transaction import androidx.room3.Upsert @Dao interface ChatRoomDao { + @Transaction @Query("SELECT * FROM ChatRoom WHERE id = :id") fun findChatRoomById(id: String): LocalChatRoom? + @Transaction @Query("SELECT * FROM ChatRoom WHERE userPublicKey = :userPublicKey") fun getChatRoomListByUserPublicKey(userPublicKey: String): List