MessageDao.kt 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package io.nexilis.service.data.daos
  2. import androidx.lifecycle.LiveData
  3. import androidx.paging.PagingSource
  4. import androidx.room.Dao
  5. import androidx.room.Insert
  6. import androidx.room.OnConflictStrategy
  7. import androidx.room.Query
  8. import io.nexilis.service.data.entities.*
  9. @Dao
  10. abstract class MessageDao {
  11. @Query("select * from Message")
  12. abstract fun getAll(): LiveData<List<Message>>
  13. @Query("select * from Message where message_id = :id")
  14. abstract fun get(id: String): LiveData<Message>
  15. @Query("select * from Message where message_id = :id")
  16. abstract fun getSync(id: String): Message?
  17. @Query("select * from (select * from Message where opposite_pin = :pin order by server_date desc limit :limit offset :offset) order by server_date asc")
  18. abstract fun getOpposite(pin: String, offset: Int = -1, limit: Int = -1): LiveData<List<Message>>
  19. @Insert(onConflict = OnConflictStrategy.REPLACE)
  20. abstract suspend fun _insert(entity: Message)
  21. @Insert(onConflict = OnConflictStrategy.REPLACE)
  22. abstract suspend fun _insertSummary(entity: MessageSummary)
  23. @Query("delete from Message")
  24. abstract suspend fun deleteAll()
  25. suspend fun insert(entity: Message) {
  26. _insert(entity)
  27. _insertSummary(
  28. MessageSummary(
  29. l_pin = entity.opposite_pin,
  30. message_id = entity.message_id,
  31. last_update = System.currentTimeMillis()
  32. )
  33. )
  34. }
  35. }