google / android-fhir

The Android FHIR SDK is a set of Kotlin libraries for building offline-capable, mobile-first healthcare applications using the HL7® FHIR® standard on Android.
https://google.github.io/android-fhir/
Apache License 2.0
465 stars 246 forks source link

FhirSyncDbInteractor #2450

Open MJ1998 opened 3 months ago

MJ1998 commented 3 months ago

IMPORTANT: All PRs must be linked to an issue (except for extremely trivial and straightforward changes).

Fixes #2456 #2363 #2386

Introducing FhirSyncDbInteractor interface which acts as an abstract layer over database operations during sync. This is used by the FhirSynchronizer.

Now the synchronizer returns a Flow\<SyncJobStatus> and is neatly invoked like following:-

val terminalSyncJobStatus =
    FhirSynchronizer(
      fhirSyncDbInteractor = fhirSyncDbInteractor,
      uploader = uploader,
      downloader = downloader,
    )
    .synchronize()
    .onEach { setProgress(buildWorkData(it)) }
    .first { it is SyncJobStatus.Failed || it is SyncJobStatus.Succeeded }

Tests not fixed yet

Description Clear and concise code change description.

Alternative(s) considered Have you considered any alternatives? And if so, why have you chosen the approach in this PR?

Type Choose one: (Bug fix | Feature | Documentation | Testing | Code health | Builds | Releases | Other)

Screenshots (if applicable)

Checklist