Guest User

Untitled

a guest
Jun 20th, 2018
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.70 KB | None | 0 0
  1. interface JobCache {
  2.  
  3. fun getJob(jobId: String): Maybe<Job>
  4.  
  5. fun putJob(job: Job)
  6.  
  7. }
  8.  
  9. class CachedJobRepository(
  10. private val delegate: JobRepository,
  11. private val jobCache: JobCache
  12. ): JobRepository by delegate {
  13.  
  14. override fun getJob(jobId: String): Observable<Job> {
  15. return jobCache.getJob(jobId)
  16. .switchIfEmpty(delegate.getJob(jobId)
  17. .firstOrError()
  18. .doOnSuccess { jobCache.putJob(it) })
  19. .toObservable()
  20. }
  21.  
  22. override fun getJobs(page: Int): Single<List<Job>> {
  23. return delegate.getJobs(status, page).doOnSuccess { jobs ->
  24. jobs.forEach { job -> jobCache.putJob(job) }
  25. }
  26. }
  27.  
  28. }
Add Comment
Please, Sign In to add comment