package Ġcom . b _ lam . resp l ash . data . billing Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . room . Database Ċ import Ġandroidx . room . Room Ċ import Ġandroidx . room . Room Database Ċ import Ġandroidx . room . Type Converters Ċ import Ġcom . b _ lam . resp l ash . data . billing . model .* Ċ Ċ @ Database ( ĊĠĠĠ Ġentities Ġ= Ġ[ ĊĠĠĠĠĠĠĠ ĠAug ment ed Sku Details :: class , ĊĠĠĠĠĠĠĠ ĠCached Purchase :: class , ĊĠĠĠĠĠĠĠ ĠDon ation :: class , ĊĠĠĠĠĠĠĠ ĠRes pl ash Pro :: class ĊĠĠĠ Ġ], ĊĠĠĠ Ġversion Ġ= Ġ 1 , ĊĠĠĠ Ġexport Schema Ġ= Ġfalse Ċ ) Ċ @ Type Converters ( Purchase Type Converter :: class ) Ċ abstract Ġclass ĠLocal Billing Database Ġ: ĠRoom Database () Ġ{ ĊĠĠĠ Ġabstract Ġfun Ġpurchase Dao (): ĠPurchase Dao ĊĠĠĠ Ġabstract Ġfun Ġent itlement s Dao (): ĠEnt itlement s Dao ĊĠĠĠ Ġabstract Ġfun Ġsku Details Dao (): ĠAug ment ed Sku Details Dao ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Volatile ĊĠĠĠĠĠĠĠ Ġprivate Ġvar ĠINSTANCE : ĠLocal Billing Database ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDATABASE _ NAME Ġ= Ġ" purchase _ db " ĊĊĠĠĠĠĠĠĠ Ġfun ĠgetInstance ( context : ĠContext ): ĠLocal Billing Database Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠINSTANCE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠINSTANCE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġbuild Database ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . application Context ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠINSTANCE Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġbuild Database ( app Context : ĠContext ): ĠLocal Billing Database Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠRoom . database Builder ( app Context , ĠLocal Billing Database :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDATABASE _ NAME ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fallback To Dest ruct ive Migration () Ġ// ĠData Ġis Ġcache , Ġso Ġit Ġis ĠOK Ġto Ġdelete ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }