/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠRead ium ĠFoundation . ĠAll Ġrights Ġreserved . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠBSD - style Ġlicense Ċ Ġ* Ġavailable Ġin Ġthe Ġtop - level ĠLICENSE Ġfile Ġof Ġthe Ġproject . Ċ Ġ*/ Ċ Ċ package Ġorg . read ium . r 2 . test app . db Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . room . Dao Ċ import Ġandroidx . room . Insert Ċ import Ġandroidx . room . On Conflict Strategy Ċ import Ġandroidx . room . Query Ċ import Ġorg . read ium . r 2 . test app . domain . model . Book Ċ import Ġorg . read ium . r 2 . test app . domain . model . Bookmark Ċ import Ġorg . read ium . r 2 . test app . domain . model . Highlight ĊĊ Ċ @ Dao Ċ interface ĠBooks Dao Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInser ts Ġa Ġbook ĊĠĠĠĠ Ġ* Ġ@ param Ġbook ĠThe Ġbook Ġto Ġinsert ĊĠĠĠĠ Ġ* Ġ@ return ĠID Ġof Ġthe Ġbook Ġthat Ġwas Ġadded Ġ( primary Ġkey ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Insert ( on Conflict Ġ= ĠOn Conflict Strategy . REPLACE ) ĊĠĠĠ Ġsuspend Ġfun Ġinsert Book ( book : ĠBook ): ĠLong ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDeletes Ġa Ġbook ĊĠĠĠĠ Ġ* Ġ@ param Ġbook Id ĠThe ĠID Ġof Ġthe Ġbook ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Query (" DELETE ĠFROM Ġ" Ġ+ ĠBook . TABLE _ NAME Ġ+ Ġ" ĠWHERE Ġ" Ġ+ ĠBook . ID Ġ+ Ġ" Ġ= Ġ: book Id ") ĊĠĠĠ Ġsuspend Ġfun Ġdelete Book ( book Id : ĠLong ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRetrieve Ġall Ġbooks ĊĠĠĠĠ Ġ* Ġ@ return ĠList Ġof Ġbooks Ġas ĠLive Data ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Query (" SELECT Ġ* ĠFROM Ġ" Ġ+ ĠBook . TABLE _ NAME Ġ+ Ġ" ĠORDER ĠBY Ġ" Ġ+ ĠBook . CRE ATION _ DATE Ġ+ Ġ" Ġdesc ") ĊĠĠĠ Ġfun ĠgetAll Books (): ĠLive Data < List < Book >> ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRetrieve Ġall Ġbook marks Ġfor Ġa Ġspecific Ġbook ĊĠĠĠĠ Ġ* Ġ@ param Ġbook Id ĠThe ĠID Ġof Ġthe Ġbook ĊĠĠĠĠ Ġ* Ġ@ return ĠList Ġof Ġbook marks Ġfor Ġthe Ġbook Ġas ĠLive Data ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Query (" SELECT Ġ* ĠFROM Ġ" Ġ+ ĠBook mark . TABLE _ NAME Ġ+ Ġ" ĠWHERE Ġ" Ġ+ ĠBook mark . BOOK _ ID Ġ+ Ġ" Ġ= Ġ: book Id ") ĊĠĠĠ Ġfun Ġget Book marks For Book ( book Id : ĠLong ): ĠLive Data < Mutable List < Bookmark >> ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRetrieve Ġall Ġhighlight s Ġfor Ġa Ġspecific Ġbook ĊĠĠĠĠ Ġ* Ġ@ param Ġbook Id ĠThe ĠID Ġof Ġthe Ġbook ĊĠĠĠĠ Ġ* Ġ@ param Ġhref ĊĠĠĠĠ Ġ* Ġ@ return ĠList Ġof Ġhighlight s Ġfor Ġthe Ġbook Ġas ĠLive Data ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Query (" SELECT Ġ* ĠFROM Ġ" Ġ+ ĠHighlight . TABLE _ NAME Ġ+ Ġ" ĠWHERE Ġ" Ġ+ ĠHighlight . BOOK _ ID Ġ+ Ġ" Ġ= Ġ: book Id ĠAND Ġ" Ġ+ ĠHighlight . RESOURCE _ H REF Ġ+ Ġ" Ġ= Ġ: href ") ĊĠĠĠ Ġfun Ġget Highlight s For Book ( book Id : ĠLong , Ġhref : ĠString ): ĠLive Data < List < Highlight >> ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRetrieve Ġall Ġhighlight s Ġfor Ġa Ġspecific Ġbook ĊĠĠĠĠ Ġ* Ġ@ param Ġbook Id ĠThe ĠID Ġof Ġthe Ġbook ĊĠĠĠĠ Ġ* Ġ@ return ĠList Ġof Ġhighlight s Ġfor Ġthe Ġbook Ġas ĠLive Data ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Query (" SELECT Ġ* ĠFROM Ġ" Ġ+ ĠHighlight . TABLE _ NAME Ġ+ Ġ" ĠWHERE Ġ" Ġ+ ĠHighlight . BOOK _ ID Ġ+ Ġ" Ġ= Ġ: book Id ") ĊĠĠĠ Ġfun Ġget Highlight s For Book ( book Id : ĠLong ): ĠLive Data < List < Highlight >> ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRetrieve Ġall Ġhighlight s Ġfor Ġa Ġspecific Ġbook ĊĠĠĠĠ Ġ* Ġ@ param Ġhighlight Id ĠThe ĠID Ġof Ġthe Ġhighlight ĊĠĠĠĠ Ġ* Ġ@ return ĠList Ġof Ġhighlight s Ġthat Ġmatch Ġhighlight Id ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Query (" SELECT Ġ* ĠFROM Ġ" Ġ+ ĠHighlight . TABLE _ NAME Ġ+ Ġ" ĠWHERE Ġ" Ġ+ ĠHighlight . HIG HL IGHT _ ID Ġ+ Ġ" Ġ= Ġ: highlight Id ") ĊĠĠĠ Ġsuspend Ġfun Ġget Highlight By Highlight Id ( highlight Id : ĠString ): ĠMutable List < Highlight > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInser ts Ġa Ġbookmark ĊĠĠĠĠ Ġ* Ġ@ param Ġbookmark ĠThe Ġbookmark Ġto Ġinsert ĊĠĠĠĠ Ġ* Ġ@ return ĠThe ĠID Ġof Ġthe Ġbookmark Ġthat Ġwas Ġadded Ġ( primary Ġkey ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Insert ( on Conflict Ġ= ĠOn Conflict Strategy . IGNORE ) ĊĠĠĠ Ġsuspend Ġfun Ġinsert Bookmark ( bookmark : ĠBook mark ): ĠLong ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInser ts Ġa Ġhighlight ĊĠĠĠĠ Ġ* Ġ@ param Ġhighlight ĠThe Ġhighlight Ġto Ġinsert ĊĠĠĠĠ Ġ* Ġ@ return ĠThe ĠID Ġof Ġthe Ġhighlight Ġthat Ġwas Ġadded Ġ( primary Ġkey ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Insert ( on Conflict Ġ= ĠOn Conflict Strategy . REPLACE ) ĊĠĠĠ Ġsuspend Ġfun Ġinsert Highlight ( highlight : ĠHighlight ): ĠLong ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUpdates Ġa Ġhighlight ĊĠĠĠĠ Ġ* Ġ@ param Ġhighlight Id ĠThe Ġnavigator Ġhighlight ĠID ĊĠĠĠĠ Ġ* Ġ@ param Ġcolor ĠUpdated Ġcolor ĊĠĠĠĠ Ġ* Ġ@ param Ġannotation ĠUpdated Ġannotation ĊĠĠĠĠ Ġ* Ġ@ param Ġannotation Mark Style ĠUpdated Ġmark Ġstyle ĊĠĠĠĠ Ġ* Ġ@ return ĠThe ĠID Ġof Ġthe Ġhighlight Ġthat Ġwas Ġadded Ġ( primary Ġkey ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Query (" UPDATE Ġ" Ġ+ ĠHighlight . TABLE _ NAME Ġ+ Ġ" ĠSET Ġ" Ġ+ ĠHighlight . COLOR Ġ+ Ġ" Ġ= Ġ: color , Ġ" Ġ+ ĠHighlight . AN NOT ATION Ġ+ Ġ" Ġ= Ġ: annotation , Ġ" Ġ+ ĠHighlight . AN NOT ATION _ MARK _ STYLE Ġ+ Ġ" Ġ= : annotation Mark Style ĠWHERE Ġ" Ġ+ ĠHighlight . HIG HL IGHT _ ID Ġ+ Ġ"= Ġ: highlight Id ") ĊĠĠĠ Ġsuspend Ġfun Ġupdate Highlight ( ĊĠĠĠĠĠĠĠ Ġhighlight Id : ĠString , ĊĠĠĠĠĠĠĠ Ġcolor : ĠInt , ĊĠĠĠĠĠĠĠ Ġannotation : ĠString , ĊĠĠĠĠĠĠĠ Ġannotation Mark Style : ĠString ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDeletes Ġa Ġbookmark ĊĠĠĠĠ Ġ* Ġ@ param Ġid ĠThe Ġid Ġof Ġthe Ġbookmark Ġto Ġdelete ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Query (" DELETE ĠFROM Ġ" Ġ+ ĠBook mark . TABLE _ NAME Ġ+ Ġ" ĠWHERE Ġ" Ġ+ ĠBook mark . ID Ġ+ Ġ" Ġ= Ġ: id ") ĊĠĠĠ Ġsuspend Ġfun Ġdelete Bookmark ( id : ĠLong ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDeletes Ġa Ġhighlight ĊĠĠĠĠ Ġ* Ġ@ param Ġid ĠThe ĠID Ġof Ġthe Ġhighlight Ġto Ġdelete ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Query (" DELETE ĠFROM Ġ" Ġ+ ĠHighlight . TABLE _ NAME Ġ+ Ġ" ĠWHERE Ġ" Ġ+ ĠHighlight . ID Ġ+ Ġ" Ġ= Ġ: id ") ĊĠĠĠ Ġsuspend Ġfun Ġdelete Highlight ( id : ĠLong ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDeletes Ġa Ġhighlight Ġby Ġthe Ġhighlight Id ĊĠĠĠĠ Ġ* Ġ@ param Ġhighlight Id ĠThe Ġhighlight Id Ġof Ġthe Ġhighlight Ġto Ġdelete ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Query (" DELETE ĠFROM Ġ" Ġ+ ĠHighlight . TABLE _ NAME Ġ+ Ġ" ĠWHERE Ġ" Ġ+ ĠHighlight . HIG HL IGHT _ ID Ġ+ Ġ" Ġ= Ġ: highlight Id ") ĊĠĠĠ Ġsuspend Ġfun Ġdelete Highlight By Highlight Id ( highlight Id : ĠString ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠS aves Ġbook Ġprogress ion ĊĠĠĠĠ Ġ* Ġ@ param Ġlocator ĠLocation Ġof Ġthe Ġbook ĊĠĠĠĠ Ġ* Ġ@ param Ġid ĠThe Ġbook Ġto Ġupdate ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Query (" UPDATE Ġ" Ġ+ ĠBook . TABLE _ NAME Ġ+ Ġ" ĠSET Ġ" Ġ+ ĠBook . PROGRESS ION Ġ+ Ġ" Ġ= Ġ: locator ĠWHERE Ġ" Ġ+ ĠBook . ID Ġ+ Ġ"= Ġ: id ") ĊĠĠĠ Ġsuspend Ġfun Ġsave Progress ion ( locator : ĠString , Ġid : ĠLong ) Ċ }