This commit is contained in:
Eric85710 2026-06-09 15:50:18 +08:00
parent fff7d1a641
commit 346ca621d0

View file

@ -28,13 +28,23 @@ data class MessageEntity(
@Dao @Dao
interface MessageDao { interface MessageDao {
// 💡 修正這裡:WHERE 條件欄位改為 chatRoomId // 1. 根據 roomId 監聽整個聊天室的訊息 Flow
@Query("SELECT * FROM messages WHERE chatRoomId = :roomId ORDER BY createdAt DESC") // 👈 確保是 DESC(降序) @Query("SELECT * FROM messages WHERE chatRoomId = :roomId ORDER BY createdAt DESC")
fun getMessagesFlow(roomId: String): Flow<List<MessageEntity>> fun getMessagesFlow(roomId: String): Flow<List<MessageEntity>>
// 2. ✨【新增】根據訊息 id 查詢單筆資料(樂觀更新備份用)
@Query("SELECT * FROM messages WHERE id = :messageId LIMIT 1")
suspend fun getMessageById(messageId: String): MessageEntity?
// 3. 插入或更新單筆訊息
@Insert(onConflict = OnConflictStrategy.REPLACE) @Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insertOrUpdate(message: MessageEntity) suspend fun insertOrUpdate(message: MessageEntity)
// 4. ✨【優化】支援批次插入或更新(可以順便把 refreshChatMessages 裡面的 forEach 換掉,效能更好)
@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insertOrUpdateList(messages: List<MessageEntity>)
// 5. 根據 id 刪除特定訊息
@Query("DELETE FROM messages WHERE id = :id") @Query("DELETE FROM messages WHERE id = :id")
suspend fun deleteById(id: String) suspend fun deleteById(id: String)
} }