Skip to content

Instantly share code, notes, and snippets.

@isfaaghyth
Last active August 27, 2019 07:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save isfaaghyth/e9183de2c1bea9c290a7f55238fc4fc0 to your computer and use it in GitHub Desktop.
Save isfaaghyth/e9183de2c1bea9c290a7f55238fc4fc0 to your computer and use it in GitHub Desktop.

Raw Query Factory:

interface GraphQuery {
    @RawQuery(R.raw.product_search)
    fun productSearch(): Extractor<String>
}

Thread:

/* for rx */
interface SchedulerProvider {
    fun ui(): Scheduler
    fun io(): Scheduler
}
/* for coroutines */
interface DispatcherProvider {
    fun ui(): Dispatcher
    fun io(): Dispatcher
}

Run:

/* with rx */
GraphQuery query = Extractor.create(GraphQuery::class.java)
GraphUseCase usecase = GraphUseCase(query.productSearch())
usecase.request(RequestParams())
    .transform(schedulerProvider)
    .subscribe { result ->
        val data = result as DataBean.Response
        println(data.productName)
    }
/* with coroutines */
GraphQuery query = Extractor.create(GraphQuery::class.java)
GraphRepository repository = GraphRepository.instance()
launch(dispatcherProvider) {
    val result = withContext(Dispatchers.IO) {
        repository.response(query.productSearch(), cacheStrategy)
    }
    val data = result.successData as DataBean.Response
    println(data.productName)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment