package Ġru . ite co . fm h android . dao čĊč Ċ import Ġandroidx . room .* č Ċ import Ġkotlinx . coroutines . flow . Flow č Ċ import Ġru . ite co . fm h android . dto . New sWith Category č Ċ import Ġru . ite co . fm h android . entity . News Category Entity č Ċ import Ġru . ite co . fm h android . entity . News Entity čĊč Ċ @ Dao č Ċ interface ĠNews Dao Ġ{ čĊĠĠĠ Ġ@ Transaction čĊĠĠĠ Ġ@ Query ( čĊĠĠĠĠĠĠĠ Ġ""" SELECT Ġ* ĠFROM ĠNews Entity čĊĠĠĠĠĠĠĠĠĠĠĠ ĠWHERE Ġ(: publish Enabled ĠIS ĠNULL ĠOR Ġ: publish Enabled Ġ= Ġpublish Enabled ) čĊĠĠĠĠĠĠĠĠĠĠĠ ĠAND Ġ(: publish Date Before ĠIS ĠNULL ĠOR Ġpublish Date Ġ<= Ġ: publish Date Before ) čĊĠĠĠĠĠĠĠĠĠĠĠ ĠAND Ġ(: news CategoryId ĠIS ĠNULL ĠOR Ġ: news CategoryId Ġ= Ġnews CategoryId ) čĊĠĠĠĠĠĠĠĠĠĠĠ ĠAND Ġ(: date Start ĠIS ĠNULL ĠOR Ġpublish Date Ġ>= Ġ: date Start ) čĊĠĠĠĠĠĠĠĠĠĠĠ ĠAND Ġ(: date End ĠIS ĠNULL ĠOR Ġpublish Date Ġ<= Ġ: date End ) čĊĠĠĠĠĠĠĠĠĠĠĠ ĠAND Ġ(: status ĠIS ĠNULL ĠOR Ġ: status Ġ= Ġpublish Enabled ) čĊĠĠĠĠĠĠĠĠĠĠĠ ĠORDER ĠBY Ġpublish Date ĠDESC čĊĠĠĠĠĠĠĠ Ġ""" čĊĠĠĠ Ġ) čĊĠĠĠ Ġfun ĠgetAll News ( čĊĠĠĠĠĠĠĠ Ġpublish Enabled : ĠBoolean ? Ġ= Ġnull , čĊĠĠĠĠĠĠĠ Ġpublish Date Before : ĠLong ? Ġ= Ġnull , čĊĠĠĠĠĠĠĠ Ġnews CategoryId : ĠInt ? Ġ= Ġnull , čĊĠĠĠĠĠĠĠ Ġdate Start : ĠLong ? Ġ= Ġnull , čĊĠĠĠĠĠĠĠ Ġdate End : ĠLong ? Ġ= Ġnull , čĊĠĠĠĠĠĠĠ Ġstatus : ĠBoolean ? Ġ= Ġnull čĊĠĠĠ Ġ): ĠFlow < List < New sWith Category >> čĊčĊĠĠĠ Ġ@ Transaction čĊĠĠĠ Ġ@ Query (" SELECT Ġ* ĠFROM ĠNews Entity ") čĊĠĠĠ Ġsuspend Ġfun ĠgetAll News List (): ĠList < New sWith Category > čĊčĊĠĠĠ Ġ@ Insert ( on Conflict Ġ= ĠOn Conflict Strategy . REPLACE ) čĊĠĠĠ Ġsuspend Ġfun Ġinsert ( news Item : ĠNews Entity ) čĊčĊĠĠĠ Ġ@ Insert ( on Conflict Ġ= ĠOn Conflict Strategy . REPLACE ) čĊĠĠĠ Ġsuspend Ġfun Ġinsert ( news : ĠList < News Entity >) čĊčĊĠĠĠ Ġ@ Query (" DELETE ĠFROM ĠNews Entity ĠWHERE Ġid Ġ= Ġ: id ") čĊĠĠĠ Ġsuspend Ġfun Ġremove News Item ById ( id : ĠInt ) čĊčĊĠĠĠ Ġ@ Query (" DELETE ĠFROM ĠNews Entity ĠWHERE Ġid ĠIN Ġ(: id List )") čĊĠĠĠ Ġsuspend Ġfun Ġremove News Items ById List ( id List : ĠList < Int ?> ) č Ċ } čĊč Ċ @ Dao č Ċ interface ĠNews Category Dao Ġ{ čĊĠĠĠ Ġ@ Query (" SELECT Ġ* ĠFROM ĠNews Category Entity ĠORDER ĠBY Ġid ") čĊĠĠĠ Ġfun ĠgetAll News Categories (): ĠFlow < List < News Category Entity >> čĊčĊĠĠĠ Ġ@ Insert ( on Conflict Ġ= ĠOn Conflict Strategy . REPLACE ) čĊĠĠĠ Ġsuspend Ġfun Ġinsert ( categories : ĠList < News Category Entity >) čĊčĊĠĠĠ Ġ@ Insert ( on Conflict Ġ= ĠOn Conflict Strategy . REPLACE ) čĊĠĠĠ Ġsuspend Ġfun Ġinsert ( category : ĠNews Category Entity ) čĊčĊĠĠĠ Ġ@ Query (" SELECT Ġ* ĠFROM ĠNews Category Entity ") čĊĠĠĠ Ġfun Ġget News Category List (): ĠList < News Category Entity > č Ċ } čĊ