Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- interface JobCache {
- fun getJob(jobId: String): Maybe<Job>
- fun putJob(job: Job)
- }
- class CachedJobRepository(
- private val delegate: JobRepository,
- private val jobCache: JobCache
- ): JobRepository by delegate {
- override fun getJob(jobId: String): Observable<Job> {
- return jobCache.getJob(jobId)
- .switchIfEmpty(delegate.getJob(jobId)
- .firstOrError()
- .doOnSuccess { jobCache.putJob(it) })
- .toObservable()
- }
- override fun getJobs(page: Int): Single<List<Job>> {
- return delegate.getJobs(status, page).doOnSuccess { jobs ->
- jobs.forEach { job -> jobCache.putJob(job) }
- }
- }
- }
Add Comment
Please, Sign In to add comment