Каков наилучший способ загрузить данные на сервер, а затем сохранить их локально с помощью RxJava - PullRequest
0 голосов
/ 30 апреля 2018

Я хочу сделать две вещи: загрузить некоторые данные на сервер, а затем сохранить данные в локальной базе данных с возвращенным идентификатором с сервера. Каков наилучший способ сделать это с RxJava. Я устал делать что-то подобное, но я думаю, что это не лучшее решение из-за побочных эффектов в map и flatMap. Я использую Retrofit для связи с сервером, ObjectBox в качестве локальной базы данных и конечно RxJava2

private fun saveMyData(data: MyData) =
        uploadToServer(data).flatMap {
                    saveToLocalRepository(it)
                }


private fun uploadToServer(data: MyData): Single<MyData> =
    dataApiService.uploadMyData(data).map { id: Long -> 
                data.copy(serverId = it)
            }

private fun saveToLocalRepository(data: MyData): Single<MyData> =
        localRepository.save(data).map{ id: Long -> 
            data.copy(id = it)
        }
...