package Ġcom . covid app . db Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroidx . room . Room Ċ import Ġcom . covid app . Cov id Application Ċ import Ġcom . covid app . di . API Component Ċ import Ġcom . covid app . services . model . Country Ċ import Ġcom . covid app . util . Constants . Companion . DB _ NAME Ċ import Ġio . reactivex . Comp letable Ċ import Ġio . reactivex . Comp letable Observer Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġretrofit 2 . Response Ċ Ċ class ĠLocal CacheManager ( context : ĠContext ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġcountry DB Dao : ĠCountry DB Dao Ġ= ĊĠĠĠĠĠĠĠ ĠRoom . database Builder ( context , ĠApp Database :: class . java , ĠDB _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. allow MainThread Queries () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build (). country DB Dao ĊĊĠĠĠ Ġfun Ġsave Countries ( countries : ĠList < Country >, Ġresponse Callback : ĠResponse Callback ) Ġ{ ĊĠĠĠĠĠĠĠ ĠComp letable . from Action Ġ{ Ġcountry DB Dao . save Countries ( countries ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()). subscribe ( object Ġ: ĠComp letable Observer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Subscribe ( d : ĠDis posable ) Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonComplete () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Callback . on Save Countries () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Callback . onError () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Check Result ") ĊĠĠĠ Ġfun Ġget Countries ( response Callback : ĠResponse Callback ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcountry DB Dao . getCount ries (). subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ Ġcountries Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Callback . on Get Country ( countries ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊ Ċ } Ċ