Skip to content

Commit e8d9ad8

Browse files
committed
chore: 🔧 specify schedulers for network/database operations.
1 parent c7ff565 commit e8d9ad8

File tree

3 files changed

+21
-10
lines changed

3 files changed

+21
-10
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package es.ffgiraldez.comicsearch.platform
2+
3+
import io.reactivex.Scheduler
4+
import io.reactivex.schedulers.Schedulers
5+
6+
object ComicSchedulers {
7+
val database: Scheduler = Schedulers.single()
8+
val network: Scheduler = Schedulers.io()
9+
}

app/src/main/java/es/ffgiraldez/comicsearch/query/search/data/SearchDataSources.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@ import arrow.core.toOption
55
import es.ffgiraldez.comicsearch.comics.data.ComicLocalDataSource
66
import es.ffgiraldez.comicsearch.comics.data.ComicRemoteDataSource
77
import es.ffgiraldez.comicsearch.comics.data.network.ComicVineApi
8+
import es.ffgiraldez.comicsearch.comics.data.storage.ComicDatabase
89
import es.ffgiraldez.comicsearch.comics.domain.Query
910
import es.ffgiraldez.comicsearch.comics.domain.Volume
10-
import es.ffgiraldez.comicsearch.comics.data.storage.ComicDatabase
11+
import es.ffgiraldez.comicsearch.platform.ComicSchedulers
1112
import io.reactivex.Completable
1213
import io.reactivex.Flowable
1314
import io.reactivex.Single
@@ -17,7 +18,7 @@ class SearchRemoteDataSource(
1718
private val api: ComicVineApi
1819
) : ComicRemoteDataSource<Volume> {
1920
override fun findByTerm(searchTerm: String): Single<List<Volume>> = api.fetchVolumes(searchTerm)
20-
.subscribeOn(Schedulers.io())
21+
.subscribeOn(ComicSchedulers.network)
2122
.map { response ->
2223
response.results
2324
.filter { it.apiPublisher != null && it.apiImage != null }
@@ -33,15 +34,17 @@ class SearchLocalDataSource(
3334
override fun insert(query: String, titles: List<Volume>): Completable =
3435
Completable.fromAction {
3536
database.volumeDao().insert(query, titles)
36-
}.subscribeOn(Schedulers.io())
37+
}.subscribeOn(ComicSchedulers.database)
3738

3839
override fun findQueryByTerm(searchTerm: String): Flowable<Option<Query>> = database.volumeDao()
3940
.findQueryByTerm(searchTerm)
41+
.subscribeOn(ComicSchedulers.database)
4042
.flatMap { Flowable.just(it.firstOrNull().toOption()) }
4143
.map { search -> search.map { Query(it.queryId, it.searchTerm) } }
4244

4345
override fun findByQuery(query: Query): Flowable<List<Volume>> = database.volumeDao()
4446
.findVolumeByQuery(query.identifier)
47+
.subscribeOn(ComicSchedulers.database)
4548
.subscribeOn(Schedulers.io())
4649
.map { volumeList -> volumeList.map { Volume(it.title, it.author, it.url) } }
4750
}

app/src/main/java/es/ffgiraldez/comicsearch/query/sugestion/data/SuggestionDataSources.kt

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,18 @@ import arrow.core.toOption
55
import es.ffgiraldez.comicsearch.comics.data.ComicLocalDataSource
66
import es.ffgiraldez.comicsearch.comics.data.ComicRemoteDataSource
77
import es.ffgiraldez.comicsearch.comics.data.network.ComicVineApi
8-
import es.ffgiraldez.comicsearch.comics.domain.Query
98
import es.ffgiraldez.comicsearch.comics.data.storage.ComicDatabase
9+
import es.ffgiraldez.comicsearch.comics.domain.Query
10+
import es.ffgiraldez.comicsearch.platform.ComicSchedulers
1011
import io.reactivex.Completable
1112
import io.reactivex.Flowable
1213
import io.reactivex.Single
13-
import io.reactivex.schedulers.Schedulers
14-
1514

1615
class SuggestionRemoteDataSource(
1716
private val api: ComicVineApi
1817
) : ComicRemoteDataSource<String> {
1918
override fun findByTerm(searchTerm: String): Single<List<String>> = api.fetchVolumes(searchTerm)
20-
.subscribeOn(Schedulers.io())
19+
.subscribeOn(ComicSchedulers.network)
2120
.map { response ->
2221
response.results
2322
.distinctBy { it.name }
@@ -31,16 +30,16 @@ class SuggestionLocalDataSource(
3130
override fun insert(query: String, titles: List<String>): Completable =
3231
Completable.fromAction {
3332
database.suggestionDao().insert(query, titles)
34-
}.subscribeOn(Schedulers.io())
33+
}.subscribeOn(ComicSchedulers.database)
3534

3635
override fun findQueryByTerm(searchTerm: String): Flowable<Option<Query>> = database.suggestionDao()
3736
.findQueryByTerm(searchTerm)
38-
.subscribeOn(Schedulers.io())
37+
.subscribeOn(ComicSchedulers.database)
3938
.flatMap { Flowable.just(it.firstOrNull().toOption()) }
4039
.map { search -> search.map { Query(it.queryId, it.searchTerm) } }
4140

4241
override fun findByQuery(query: Query): Flowable<List<String>> = database.suggestionDao()
4342
.findSuggestionByQuery(query.identifier)
44-
.subscribeOn(Schedulers.io())
43+
.subscribeOn(ComicSchedulers.database)
4544
.map { suggestions -> suggestions.map { it.title } }
4645
}

0 commit comments

Comments
 (0)