package Ġorg . step ik . android . data . search . repository Ċ Ċ import Ġio . reactivex . Comp letable Ċ import Ġio . reactivex . Single Ċ import Ġorg . step ic . d roid . model . Search Query Ċ import Ġorg . step ik . android . data . search . source . Search Cache DataSource Ċ import Ġorg . step ik . android . data . search . source . Search Remote DataSource Ċ import Ġorg . step ik . android . domain . base . DataSource Type Ċ import Ġorg . step ik . android . domain . search . repository . Search Repository Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠSearch Repository Impl Ċ @ Inject Ċ constructor ( ĊĠĠĠ Ġprivate Ġval Ġsearch Remote DataSource : ĠSearch Remote DataSource , ĊĠĠĠ Ġprivate Ġval Ġsearch Cache DataSource : ĠSearch Cache DataSource Ċ ) Ġ: ĠSearch Repository Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġsave Search Query ( course Id : ĠLong , Ġquery : ĠString ): ĠComp letable Ġ= ĊĠĠĠĠĠĠĠ Ġsearch Cache DataSource . save Search Query ( Search Query ( course Id Ġ= Ġcourse Id , Ġtext Ġ= Ġquery )) ĊĊĠĠĠ Ġoverride Ġfun Ġget Search Queries ( course Id : ĠLong , Ġquery : ĠString , Ġsource Type : ĠDataSource Type ): ĠSingle < List < Search Query >> Ġ= ĊĠĠĠĠĠĠĠ Ġwhen Ġ( source Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDataSource Type . CACHE Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Cache DataSource . get Search Queries ( course Id , Ġquery ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠDataSource Type . REMOTE Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Remote DataSource . get Search Queries ( query ) ĊĠĠĠĠĠĠĠ Ġ} Ċ }