package core.database.data import androidx.room.* import kotlinx.coroutines.flow.Flow @Entity(tableName = "messages") data class MessageEntity( @PrimaryKey val id: String, val chatId: String, val senderId: String, val senderName: String, val senderAvatar: String?, val content: String?, val sequenceId: Int, val createdAt: String, val mediaType: String, val mediaJson: String, // Simplified for now val reactionsJson: String, val isRead: Boolean, val replyToId: String? = null ) @Dao interface MessageDao { @Query("SELECT * FROM messages WHERE chatId = :chatId ORDER BY sequenceId ASC") fun getMessages(chatId: String): Flow> @Insert(onConflict = OnConflictStrategy.REPLACE) suspend fun insertMessages(messages: List) @Query("DELETE FROM messages WHERE chatId = :chatId") suspend fun clearChat(chatId: String) @Query("DELETE FROM messages WHERE id = :messageId") suspend fun deleteMessage(messageId: String) } @Database(entities = [MessageEntity::class], version = 1) abstract class ChatDatabase : RoomDatabase() { abstract fun messageDao(): MessageDao }