Skip to content

Commit 1391a04

Browse files
authored
Wrap FhirEngine apis within IO Dispatcher (#2557)
* Wrap fhirengine apis within io dispatcher * Make functions look more kotlin like
1 parent 7b24b62 commit 1391a04

File tree

1 file changed

+25
-34
lines changed

1 file changed

+25
-34
lines changed

engine/src/main/java/com/google/android/fhir/impl/FhirEngineImpl.kt

Lines changed: 25 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -33,60 +33,51 @@ import com.google.android.fhir.sync.upload.ResourceConsolidatorFactory
3333
import com.google.android.fhir.sync.upload.SyncUploadProgress
3434
import com.google.android.fhir.sync.upload.UploadRequestResult
3535
import com.google.android.fhir.sync.upload.UploadStrategy
36-
import java.time.OffsetDateTime
36+
import kotlinx.coroutines.Dispatchers
3737
import kotlinx.coroutines.flow.Flow
3838
import kotlinx.coroutines.flow.firstOrNull
3939
import kotlinx.coroutines.flow.flow
4040
import kotlinx.coroutines.flow.onEach
41+
import kotlinx.coroutines.withContext
4142
import org.hl7.fhir.r4.model.Resource
4243
import org.hl7.fhir.r4.model.ResourceType
4344

4445
/** Implementation of [FhirEngine]. */
4546
internal class FhirEngineImpl(private val database: Database, private val context: Context) :
4647
FhirEngine {
47-
override suspend fun create(vararg resource: Resource): List<String> {
48-
return database.insert(*resource)
49-
}
48+
override suspend fun create(vararg resource: Resource) =
49+
withContext(Dispatchers.IO) { database.insert(*resource) }
5050

51-
override suspend fun get(type: ResourceType, id: String): Resource {
52-
return database.select(type, id)
53-
}
51+
override suspend fun get(type: ResourceType, id: String) =
52+
withContext(Dispatchers.IO) { database.select(type, id) }
5453

55-
override suspend fun update(vararg resource: Resource) {
56-
database.update(*resource)
57-
}
54+
override suspend fun update(vararg resource: Resource) =
55+
withContext(Dispatchers.IO) { database.update(*resource) }
5856

59-
override suspend fun delete(type: ResourceType, id: String) {
60-
database.delete(type, id)
61-
}
57+
override suspend fun delete(type: ResourceType, id: String) =
58+
withContext(Dispatchers.IO) { database.delete(type, id) }
6259

63-
override suspend fun <R : Resource> search(search: Search): List<SearchResult<R>> {
64-
return search.execute(database)
65-
}
60+
override suspend fun <R : Resource> search(search: Search): List<SearchResult<R>> =
61+
withContext(Dispatchers.IO) { search.execute(database) }
6662

67-
override suspend fun count(search: Search): Long {
68-
return search.count(database)
69-
}
63+
override suspend fun count(search: Search) =
64+
withContext(Dispatchers.IO) { search.count(database) }
7065

71-
override suspend fun getLastSyncTimeStamp(): OffsetDateTime? {
72-
return FhirEngineProvider.getFhirDataStore(context).readLastSyncTimestamp()
73-
}
66+
override suspend fun getLastSyncTimeStamp() =
67+
withContext(Dispatchers.IO) {
68+
FhirEngineProvider.getFhirDataStore(context).readLastSyncTimestamp()
69+
}
7470

75-
override suspend fun clearDatabase() {
76-
database.clearDatabase()
77-
}
71+
override suspend fun clearDatabase() = withContext(Dispatchers.IO) { database.clearDatabase() }
7872

79-
override suspend fun getLocalChanges(type: ResourceType, id: String): List<LocalChange> {
80-
return database.getLocalChanges(type, id)
81-
}
73+
override suspend fun getLocalChanges(type: ResourceType, id: String) =
74+
withContext(Dispatchers.IO) { database.getLocalChanges(type, id) }
8275

83-
override suspend fun purge(type: ResourceType, id: String, forcePurge: Boolean) {
84-
database.purge(type, setOf(id), forcePurge)
85-
}
76+
override suspend fun purge(type: ResourceType, id: String, forcePurge: Boolean) =
77+
withContext(Dispatchers.IO) { database.purge(type, setOf(id), forcePurge) }
8678

87-
override suspend fun purge(type: ResourceType, ids: Set<String>, forcePurge: Boolean) {
88-
database.purge(type, ids, forcePurge)
89-
}
79+
override suspend fun purge(type: ResourceType, ids: Set<String>, forcePurge: Boolean) =
80+
withContext(Dispatchers.IO) { database.purge(type, ids, forcePurge) }
9081

9182
override suspend fun syncDownload(
9283
conflictResolver: ConflictResolver,

0 commit comments

Comments
 (0)