package Ġcom . fal dez . sh ach i . data . repository . favorite Ċ Ċ import Ġandroidx . paging . Pager Ċ import Ġandroidx . paging . Paging Config Ċ import Ġandroidx . paging . Paging Data Ċ import Ġcom . fal dez . sh ach i . data . database . App Database Ċ import Ġcom . fal dez . sh ach i . data . model . Post Ċ import Ġkotlinx . coroutines . flow . Flow Ċ import Ġkotlinx . coroutines . flow . map Ċ Ċ interface ĠF avorite Repository Ġ{ ĊĠĠĠ Ġval Ġdb : ĠApp Database ĊĊĠĠĠ Ġsuspend Ġfun Ġinsert ( favorite : ĠPost ) Ġ= Ġdb . favorite Dao (). insert ( favorite ) ĊĊĠĠĠ Ġsuspend Ġfun Ġdelete ( favorite : ĠPost ) Ġ= Ġdb . favorite Dao (). delete ( favorite ) ĊĊĠĠĠ Ġfun Ġquery ( tags : ĠString ): ĠFlow < Paging Data < Post >> Ġ= ĠP ager ( ĊĠĠĠĠĠĠĠ Ġconfig Ġ= ĠP aging Config ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠpageSize Ġ= Ġ 1 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenable Place holders Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġpaging Source Factory Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġtags . split (" Ġ"). map NotNull Ġ{ Ġif Ġ( it . isNull OrEmpty ()) Ġnull Ġelse Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString ( separator Ġ= Ġ" Ġ") Ġ{ Ġ" tags :$ it " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( query . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . favorite Dao (). query () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . favorite Dao (). query By Tags ( query ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ). flow ĊĊĠĠĠ Ġfun Ġquery By Server Url And Post Ids ( server Id : ĠInt , Ġpost Ids : ĠList < Int >): ĠFlow < Set < Int >> Ġ= ĊĠĠĠĠĠĠĠ Ġdb . favorite Dao (). query By Server Url And Post Ids ( server Id , Ġpost Ids ). map Ġ{ Ġit . toSet () Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġquery By Server Url And Post Id ( server Id : ĠInt , Ġpost Id : ĠInt ): ĠInt ? Ġ= ĊĠĠĠĠĠĠĠ Ġdb . favorite Dao (). query By Server Url And Post Id ( server Id , Ġpost Id ) ĊĊĠĠĠ Ġsuspend Ġfun ĠgetAll (): ĠList < Post > Ġ= Ġdb . favorite Dao (). getAll () Ċ Ċ }