package Ġcom . example . shopping . data Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . room . Database Ċ import Ġandroidx . room . Room Ċ import Ġandroidx . room . Room Database Ċ Ċ @ Database ( entities Ġ= Ġ[ Shopping Item :: class ] Ġ, Ġversion Ġ= Ġ 1 ) Ċ abstract Ġclass ĠShop ping Database () Ġ: ĠRoom Database () Ġ{ ĊĠĠĠ Ġabstract Ġfun Ġget Shopping Dao (): ĠShop ping Dao ĊĊĠĠĠ Ġcompanion Ġobject { ĊĠĠĠĠĠĠĠ Ġ@ Volatile ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġinstance Ġ: ĠShop ping Database ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠ Ġfun ĠgetInstance ( context : ĠContext ): ĠShop ping Database Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinstance ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġkotlin . synchronized ( this ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstance ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġbuild Database ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ Ġinstance Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġbuild Database ( context : ĠContext ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRoom . database Builder ( context . application Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShop ping Database :: class . java ," shopping _ db ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} Ċ }