46 lines
1.4 KiB
Kotlin
46 lines
1.4 KiB
Kotlin
package chats.data.local.dao
|
|
|
|
import androidx.room.*
|
|
import chats.data.local.database.ChatEntity
|
|
import kotlinx.coroutines.flow.Flow
|
|
|
|
/**
|
|
* DAO для операций с чатами в Room Database
|
|
*/
|
|
@Dao
|
|
interface ChatDao {
|
|
|
|
@Query("SELECT * FROM chats ORDER BY updatedAtMillis DESC")
|
|
fun getAllChats(): Flow<List<ChatEntity>>
|
|
|
|
@Query("SELECT * FROM chats WHERE remoteId = :remoteId LIMIT 1")
|
|
suspend fun getChatByRemoteId(remoteId: String): ChatEntity?
|
|
|
|
@Query("SELECT * FROM chats WHERE localId = :localId LIMIT 1")
|
|
suspend fun getChatByLocalId(localId: String): ChatEntity?
|
|
|
|
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
|
suspend fun insertChat(chat: ChatEntity)
|
|
|
|
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
|
suspend fun insertChats(chats: List<ChatEntity>)
|
|
|
|
@Update
|
|
suspend fun updateChat(chat: ChatEntity)
|
|
|
|
@Query("UPDATE chats SET lastMessageText = :lastMessageText, lastMessageTimestamp = :timestamp WHERE remoteId = :chatId")
|
|
suspend fun updateLastMessage(chatId: String, lastMessageText: String?, timestamp: String?)
|
|
|
|
@Query("UPDATE chats SET unreadCount = :count WHERE remoteId = :chatId")
|
|
suspend fun updateUnreadCount(chatId: String, count: Int)
|
|
|
|
@Delete
|
|
suspend fun deleteChat(chat: ChatEntity)
|
|
|
|
@Query("DELETE FROM chats WHERE remoteId = :remoteId")
|
|
suspend fun deleteChatByRemoteId(remoteId: String)
|
|
|
|
@Query("DELETE FROM chats")
|
|
suspend fun deleteAllChats()
|
|
}
|