Я хочу использовать комнату с базой данных 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"
)