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 lastMessageTimestamp DESC") fun getAllChats(): Flow> @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) @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: Long?) @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() }