package Ġdev . max si om in . lib pass . database Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . room . Database Ċ import Ġandroidx . room . Room Ċ import Ġandroidx . room . Room Database Ċ Ċ private Ġconst Ġval ĠVERSION Ġ= Ġ 1 Ċ Ċ /** Ċ Ġ* ĠContains Ġall Ġpasses Ċ Ġ*/ Ċ @ Database ( entities Ġ= Ġ[ Library Pass :: class ], Ġversion Ġ= ĠVERSION ) Ċ abstract Ġclass ĠLib pass Database Ġ: ĠRoom Database () Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġnew Ġinstance Ġof Ġ[ Lib pass Dao ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġfun Ġlib pass Dao (): ĠLib pass Dao ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDATABASE _ NAME Ġ= Ġ" lib pass Database " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠLIB PASS _ TABLE Ġ= Ġ" lib pass Table " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠLIB PASS _ VALUE Ġ= Ġ" value " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠLIB PASS _ ALIAS Ġ= Ġ" alias " ĊĊĠĠĠĠĠĠĠ Ġ@ Volatile ĊĠĠĠĠĠĠĠ Ġprivate Ġvar ĠINSTANCE : ĠLib pass Database ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReturns Ġinstance Ġof Ġ[ Lib pass Database ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun ĠgetInstance ( context : ĠContext ): ĠLib pass Database Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( this ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġinstance Ġ= ĠINSTANCE ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġinstance Ġis Ġ` null ` Ġmake Ġa Ġnew Ġdatabase Ġinstance ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( instance Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstance Ġ= ĠRoom . database Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLib pass Database :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDATABASE _ NAME ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). fallback To Dest ruct ive Migration () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠINSTANCE Ġ= Ġinstance ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠReturn Ġinstance ; Ġsmart Ġcast Ġto Ġbe Ġnon - null ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinstance ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ