package Ġcom . an sh ul vy as . cache . db Ċ Ċ import Ġandroid . arch . persistence . room . Database Ċ import Ġandroid . arch . persistence . room . Room Ċ import Ġandroid . arch . persistence . room . Room Database Ċ import Ġandroid . content . Context Ċ import Ġcom . an sh ul vy as . cache . dao . Cached Projects Dao Ċ import Ġcom . an sh ul vy as . cache . dao . Config Dao Ċ import Ġcom . an sh ul vy as . cache . model . Cached Project Ċ import Ġcom . an sh ul vy as . cache . model . Config Ċ import Ġjavax . inject . Inject Ċ Ċ @ Database ( entities Ġ= ĠarrayOf ( Cached Project :: class , ĊĠĠĠĠĠĠĠ ĠConfig :: class ), Ġversion Ġ= Ġ 1 ) Ċ abstract Ġclass ĠProjects Database Ġ@ Inject Ġconstructor (): ĠRoom Database () Ġ{ ĊĊĠĠĠ Ġabstract Ġfun Ġcached Projects Dao (): ĠCached Projects Dao ĊĠĠĠ Ġabstract Ġfun Ġconfig Dao (): ĠConfig Dao ĊĊĠĠĠ Ġprivate Ġvar ĠINSTANCE : ĠProjects Database ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġlock Ġ= ĠAny () ĊĊĠĠĠ Ġfun ĠgetInstance ( context : ĠContext ): ĠProjects Database Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( INSTANCE Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( lock ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( INSTANCE Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠINSTANCE Ġ= ĠRoom . database Builder ( context . application Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProjects Database :: class . java , Ġ" projects . db ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠINSTANCE Ġas ĠProjects Database ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠINSTANCE Ġas ĠProjects Database ĊĠĠĠ Ġ} Ċ }