Как реактивно получать обновление данных из БД SQLite?
Использую надстройку Room. У меня есть некоторая сущность
@Entity
data class MedicalData(
@PrimaryKey val id: Int,
@ColumnInfo(name = "Text") val text: String?,
@ColumnInfo(name = "Number") val number: Int?
)
DAO для нее
@Dao
interface MedicalDataDao {
@Query("SELECT * FROM MedicalData")
fun getAll(): List<MedicalData>
@Query("SELECT * FROM MedicalData ORDER BY id DESC LIMIT :limit")
fun getList(limit: Int): List<MedicalData>
@Insert
fun add(vararg medicalData: MedicalData)
@Delete
fun clear(medicalData: MedicalData)
}
И сама БД
abstract class AppDatabase : RoomDatabase() {
abstract fun medicalDataDao(): MedicalDataDao
}
Создаю экземпляр БД и добавляю в него некоторые объекты:
bservable.create<MedicalData> {
val db = Room.databaseBuilder(this, AppDatabase::class.java, "medtor").build()
val medicalDataDao = db.medicalDataDao()
val testObject = MedicalData(0, "some", 123)
val testObject2 = MedicalData(1, "test", 456)
val testObject3 = MedicalData(2, "text", 789)
medicalDataDao.add(testObject)
medicalDataDao.add(testObject2)
medicalDataDao.add(testObject3)
}.subscribeOn(
Schedulers.io()
).subscribeBy(
onNext = { print("onNext: $it") },
onError = { print("onError: $it") },
onComplete = { print("Complete") }
)
Как я могу реактивно получать список объектов при добавлении нового, чтобы при вызове medicalDataDao.add(object) вызывался метод getAll() и выводил данные хотя бы в консоль?