package Ġcom . for n to h . mv vm templates . recipes . database . src Ċ Ċ fun Ġdatabase ( ĊĠĠĠ ĠpackageName : ĠString , ĊĠĠĠ Ġdatabase Name : ĠString , Ċ ) Ġ= Ġ""" package Ġ$ packageName Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . room . Database Ċ import Ġandroidx . room . Room Ċ import Ġandroidx . room . Room Database Ċ import Ġandroidx . room . Type Converters Ċ import Ġjavax . inject . Singleton Ċ Ċ import Ġ$ packageName . converters . Converters Ċ Ċ @ Singleton Ċ @ Database ( ĊĠĠĠ Ġentities Ġ= Ġ[ ĊĠĠĠĠĠĠĠ Ġ// TODO : ĠInsert ĠEntities Ġhere ĊĠĠĠ Ġ], ĊĠĠĠ Ġversion Ġ= Ġ 1 , ĊĠĠĠ Ġexport Schema Ġ= Ġfalse Ċ ) Ċ @ Type Converters ( Converters :: class ) Ċ abstract Ġclass ĠApp Database Ġ: ĠRoom Database () Ġ{ ĊĊĠĠĠ Ġ// TODO : ĠInsert ĠDA Os Ġhere ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Volatile ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġinstance : ĠApp Database ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠLOCK Ġ= ĠAny () ĊĊĠĠĠĠĠĠĠ Ġoperator Ġfun Ġinvoke ( context : ĠContext ) Ġ= Ġinstance Ġ?: Ġsynchronized ( LOCK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstance Ġ?: Ġbuild Database ( context ). also Ġ{ Ġinstance Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġbuild Database ( context : ĠContext ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRoom . database Builder ( context . application Context , ĠApp Database :: class . java , Ġ"$ database Name . db ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fallback To Dest ruct ive Migration () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} Ċ } Ċ """ Ċ