Room не добавляет элемент
Не могу понять в чем проблема. Добавляю элемент в базу, все добавляется без ошибок, но при получении списка из базы он пуст. Использую Room и Moxy addPersonPresenter:
class AddPersonPresenter(application: Application): MvpPresenter<AddPersonView>() {
private val repository = MyRepository.getInstance(application)
fun startActivity() {
viewState.showActivity()
}
fun addPerson(person: Person) {
Log.d("M_AddPersonPresenter","addPerson")
presenterScope.launch { repository.insertPerson(person)}
}
}
MyRepository:
class MyRepository(applicationContext: Application) {
private lateinit var personDao: PersonDao
private lateinit var eventDao: EventDao
companion object{
@Volatile private var INSTANCE : MyRepository? = null
fun getInstance(applicationContext: Application): MyRepository? {
if (INSTANCE == null) {
synchronized(MyRepository::class) {
INSTANCE = MyRepository(applicationContext)
}
}
return INSTANCE
}
}
init {
init {
val database = MyDatabase.getInstance(applicationContext)
personDao = database!!.personDao()
eventDao = database.eventDao()
}
//Person
fun getAllPerson():LiveData<List<Person>> = personDao.getAllPerson()
suspend fun deletePerson(person: Person) = withContext(Dispatchers.IO){personDao.deletePerson(person)}
suspend fun updatePerson(person: Person) = withContext(Dispatchers.IO){personDao.updatePerson(person)}
suspend fun insertPerson(person: Person) {
withContext(Dispatchers.IO) {
Log.d("M_MyRepository","insert person $person")
personDao.insertPerson(person)
}
}
//Event
fun getAllEvent():LiveData<List<Event>> = eventDao.getAllEvents()
suspend fun deleteEvent(event: Event) = withContext(Dispatchers.IO){eventDao.deleteEvent(event)}
suspend fun updateEvent(event: Event) = withContext(Dispatchers.IO){eventDao.updateEvent(event)}
suspend fun insertEvent(event: Event) = withContext(Dispatchers.IO){eventDao.insertEvent()}
}
PersonDao:
@Dao
interface PersonDao {
@Query("SELECT * FROM person ORDER BY name")
fun getAllPerson(): LiveData<List<Person>>
@Insert
fun insertPerson(vararg person: Person)
@Delete
fun deletePerson(person: Person)
@Update
fun updatePerson(person: Person)
}
Entity:
@Entity
data class Person(
@PrimaryKey(autoGenerate = true)
val id: Int?,
val name: String,
val dob: Int,
val height: Int,
val weight: Int
)
PersonPresenter:
class PersonPresenter(application: Application): MvpPresenter<PersonView>() {
private val repository = MyRepository.getInstance(application)
val list = repository.getAllPerson()
fun onStartFragment() {
if (list.value.isNullOrEmpty()) {
Log.d("M_PersonPresenter","list empty")
} else {
Log.d("M_PersonPresenter","showPerson")
viewState.showPersonList(list.value!!)
}
}
}
После добавления Person получаем следующие логи:
M_AddPersonPresenter: addPerson
M_AddPersonActivity: addPerson
M_MyRepository: insert person Person(id=null, name=Иванов, dob=2010, height=150, weight=50)
M_PersonPresenter: list empty
Не могу понять почему список пустой вставка же прошла.