dm-103
This commit is contained in:
parent
fff7d1a641
commit
346ca621d0
1 changed files with 12 additions and 2 deletions
|
|
@ -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)
|
||||||
}
|
}
|
||||||
Loading…
Reference in a new issue