Android - реализация комнаты с котлин Coroutine - PullRequest
0 голосов
/ 12 октября 2019

Я хочу использовать комнату с базой данных Coroutine, пока это мои коды:

это мой DAO

@Dao
interface MainDao{
    // 1: Select All
    @Query("SELECT * FROM MainData")
    suspend fun getMainData(): List<MainData>

    // 2: Insert
    @Insert(onConflict = OnConflictStrategy.REPLACE)
    suspend fun insertMainData(mainData: MainData)

    @Update
    suspend fun updateMainData(mainData: MainData)

    @Delete
    suspend fun deleteTask(mainData: MainData)

    // 3: Delete
    @Query("DELETE FROM MainData")
    suspend fun deleteAllMainData()

это мой класс репозитория:

class MainRepository(application: Application) : BaseRepository() {
    val api: MainApi = ApiConnection.client.create(MainApi::class.java)

    private val mainDao: MainDao
    val db = DataBase.getInstance(application)

    init {
        mainDao = db.mainDao()
    }

    suspend fun getMain(): MainData? {
        return safeApiCall(
                call = {
                    api.getMainData().await()
                },
                error = "Error fetching news"
        )
    }

Я использую модификацию для извлечения данных, она работает нормально и возвращает значение, следующий шаг - добавление места в проект.

, чтобы сделать это, мне сначала нужно сохранить данные в базе данных комнаты, где и как я должен сохранить данные.

здесь я получаю ответ от сервера и возвращаюсь в viewModel, где я должен сохранить данные в базе данных:

    return safeApiCall(
            call = {
                api.getMainData().await()
            },
            error = "Error fetching news"
    )
...