/
AndroidVersionRepository.kt
37 lines (32 loc) 路 1.21 KB
/
AndroidVersionRepository.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package com.lukaslechner.coroutineusecasesonandroid.usecases.coroutines.usecase14
import com.lukaslechner.coroutineusecasesonandroid.mock.AndroidVersion
import com.lukaslechner.coroutineusecasesonandroid.mock.MockApi
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.async
import kotlinx.coroutines.launch
import timber.log.Timber
class AndroidVersionRepository(
private var database: AndroidVersionDao,
private val scope: CoroutineScope,
private val api: MockApi = mockApi()
) {
suspend fun getLocalAndroidVersions(): List<AndroidVersion> {
return database.getAndroidVersions().mapToUiModelList()
}
suspend fun loadAndStoreRemoteAndroidVersions(): List<AndroidVersion> {
return scope.async {
val recentVersions = api.getRecentAndroidVersions()
Timber.d("Recent Android versions loaded")
for (recentVersion in recentVersions) {
Timber.d("Insert $recentVersion to database")
database.insert(recentVersion.mapToEntity())
}
recentVersions
}.await()
}
fun clearDatabase() {
scope.launch {
database.clear()
}
}
}