package Ġcom . sq is land . android . test _ demo . db Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . room .* Ċ import Ġdagger . Module Ċ import Ġdagger . Provides Ċ import Ġjavax . inject . Singleton Ċ Ċ @ Entity Ċ data Ġclass ĠCounter (@ PrimaryKey Ġval Ġid : ĠInt ? Ġ= Ġnull , Ġ@ Column Info ( name Ġ= Ġ" count ") Ġval Ġcount : ĠInt Ġ= Ġ 0 ) Ċ Ċ @ Dao Ċ abstract Ġclass ĠCounter Dao Ġ{ ĊĠĠĠ Ġ@ Query (" SELECT Ġ* ĠFROM Ġcounter ĠLIMIT Ġ 1 ") ĊĠĠĠ Ġabstract Ġfun Ġlive Counter (): ĠLive Data < Counter > ĊĊĠĠĠ Ġ@ Query (" SELECT Ġ* ĠFROM Ġcounter ĠLIMIT Ġ 1 ") ĊĠĠĠ Ġabstract Ġsuspend Ġfun Ġget Counter (): ĠCounter ? ĊĊĠĠĠ Ġ@ Insert ĊĠĠĠ Ġabstract Ġsuspend Ġfun Ġinsert ( counter : ĠCounter ) ĊĊĠĠĠ Ġ@ Query (" DELETE ĠFROM Ġcounter ") ĊĠĠĠ Ġabstract Ġsuspend Ġfun Ġdelete All () ĊĊĠĠĠ Ġ@ Transaction ĊĠĠĠ Ġopen Ġsuspend Ġfun Ġsave ( counter : ĠCounter ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdelete All () ĊĠĠĠĠĠĠĠ Ġinsert ( counter ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Database ( entities Ġ= Ġ[ Counter :: class ], Ġversion Ġ= Ġ 1 ) Ċ abstract Ġclass ĠCounter Database Ġ: ĠRoom Database () Ġ{ ĊĠĠĠ Ġabstract Ġfun Ġcounter Dao (): ĠCounter Dao Ċ } Ċ Ċ @ Module Ċ class ĠDb Module ( private Ġval Ġcontext : ĠContext ) Ġ{ ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġinternal Ġfun Ġprovide Db (): ĠCounter Database Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRoom . database Builder ( context , ĠCounter Database :: class . java , Ġ" counter - database ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () Ċ }