package Ġip ca . example . top news . repository . local db Ċ Ċ import Ġandroidx . room .* Ċ import Ġcom . squareup . mos hi . Json Adapter Ċ import Ġcom . squareup . mos hi . M oshi Ċ import Ġip ca . example . top news . repository . Repository Ċ import Ġip ca . example . top news . repository . backend . models . Article Ċ import Ġip ca . example . top news . repository . backend . models . Articles Ċ Ċ // Ċ // Ġ ĠTop News Ċ // Ċ // Ġ ĠCreated Ġby ĠLo uren Ã§o ĠG ome s Ġon Ġ 2 7 / 0 4 / 2 0 2 1 . Ċ // Ġ ĠCopyright ĠÂ© Ġ 2 0 2 1 ĠLo uren Ã§o ĠG ome s . ĠAll Ġrights Ġreserved . Ċ // Ċ Ċ @ Entity Ċ class ĠArticle Cache ( Ġ@ field : PrimaryKey Ġvar Ġurl : ĠString , Ġvar Ġjson String : ĠString ?, Ġvar Ġcategory : ĠString ) Ċ Ċ @ Dao Ċ interface ĠArticle Cache Dao Ġ{ ĊĊĠĠĠ Ġ@ Query (" SELECT Ġ* ĠFROM ĠArticle Cache ĠWHERE Ġcategory Ġ= Ġ: category ") ĊĠĠĠ Ġsuspend Ġfun ĠgetAll ( category : String ): ĠList < Article Cache > ĊĊĠĠĠ Ġ@ Query (" DELETE ĠFROM ĠArticle Cache ĠWHERE Ġurl Ġ= Ġ: url ") ĊĠĠĠ Ġsuspend Ġfun Ġdelete ( url : ĠString ) ĊĊĠĠĠ Ġ@ Query (" SELECT Ġ* ĠFROM ĠArticle Cache ĠWHERE Ġurl Ġ= Ġ: url ") ĊĠĠĠ Ġsuspend Ġfun ĠgetBy Url ( url : ĠString ): ĠArticle Cache ĊĊĠĠĠ Ġ@ Insert ( on Conflict Ġ= ĠOn Conflict Strategy . REPLACE ) ĊĠĠĠ Ġsuspend Ġfun Ġinsert ( article Cache : ĠArticle Cache ) Ċ } Ċ Ċ fun ĠArticle . toJson String () Ġ: ĠString Ġ{ ĊĠĠĠ Ġval Ġm oshi : ĠM oshi Ġ= ĠM oshi . Builder (). build () ĊĠĠĠ Ġval Ġadapter : ĠJson Adapter < Article > Ġ= Ġm oshi . adapter ( Article :: class . java ) ĊĠĠĠ Ġreturn Ġadapter . toJson ( this ) Ċ } Ċ Ċ fun ĠArticle . fromJson ( json String : String ?) Ġ: ĠArticle ? Ġ{ ĊĠĠĠ Ġval Ġm oshi : ĠM oshi Ġ= ĠM oshi . Builder (). build () ĊĠĠĠ Ġval Ġadapter : ĠJson Adapter < Article > Ġ= Ġm oshi . adapter ( Article :: class . java ) ĊĠĠĠ Ġreturn Ġadapter . fromJson ( json String ) Ċ }