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

Не могу понять почему список пустой вставка же прошла.


Ответы (0 шт):