package Ġcom . do val dev . bol ud ac ourse tracker . database . backup Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . room . Database Ċ import Ġandroidx . room . Room Ċ import Ġandroidx . room . Room Database Ċ import Ġandroidx . room . migration . Migration Ċ import Ġandroidx . sqlite . db . Support SQLite Database Ċ Ċ @ Database ( entities Ġ= ĠarrayOf ( Saved Courses Entity :: class ), Ġversion Ġ= Ġ 2 , Ġexport Schema Ġ= Ġfalse ) Ċ abstract Ġclass ĠSaved Courses Room Database Ġ: ĠRoom Database () Ġ{ ĊĊĠĠĠ Ġabstract Ġfun Ġcourses Dao (): ĠSaved Courses Dao ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠSingleton Ġprevents Ġmultiple Ġinstances Ġof Ġdatabase Ġopening Ġat Ġthe ĊĠĠĠĠĠĠĠ Ġ// Ġsame Ġtime . ĊĠĠĠĠĠĠĠ Ġ@ Volatile ĊĠĠĠĠĠĠĠ Ġprivate Ġvar ĠINSTANCE : ĠSaved Courses Room Database ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Database ( context : ĠContext ): ĠSaved Courses Room Database Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtemp Instance Ġ= ĠINSTANCE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( temp Instance Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtemp Instance ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinstance Ġ= ĠRoom . database Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . application Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSaved Courses Room Database :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" cursos _ saved _ database " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). add Migrations ( M IG RATION _ 1 _ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠINSTANCE Ġ= Ġinstance ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinstance ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }