package Ġcom . cor rot . kw iat onomous app . data . repository Ċ Ċ import Ġcom . cor rot . kw iat onomous app . common . to Long Ċ import Ġcom . cor rot . kw iat onomous app . data . local . database . entity . Device Update Entity Ċ import Ġcom . cor rot . kw iat onomous app . data . local . database . entity . to Device Update Ċ import Ġcom . cor rot . kw iat onomous app . data . remote . dto . Device Update Dto Ċ import Ġcom . cor rot . kw iat onomous app . domain . repository . Device Update Repository Ċ import Ġkotlinx . coroutines . flow . flow Ċ import Ġokhttp 3 . internal . EMPTY _ RESPONSE Ċ import Ġretrofit 2 . HttpException Ċ import Ġretrofit 2 . Response Ċ Ċ class ĠFake Device Update Repository Ġ: ĠDevice Update Repository Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġbackend Device Updates Ġ= Ġmutable ListOf ( ĊĠĠĠĠĠĠĠ ĠDevice Update Dto ( 1 0 , Ġ" id 1 ", Ġ 1 0 0 0 0 0 0 0 0 0 L , Ġ 1 0 0 , Ġ 4 . 2 5 f , Ġ 2 2 . 5 f , Ġ 5 5 . 5 f ), ĊĠĠĠĠĠĠĠ ĠDevice Update Dto ( 1 1 , Ġ" id 1 ", Ġ 1 1 0 0 0 0 0 0 0 0 L , Ġ 9 0 , Ġ 4 . 0 5 f , Ġ 2 3 . 5 f , Ġ 5 4 . 5 f ), ĊĠĠĠĠĠĠĠ ĠDevice Update Dto ( 1 2 , Ġ" id 1 ", Ġ 1 2 0 0 0 0 0 0 0 0 L , Ġ 8 0 , Ġ 3 . 7 5 f , Ġ 2 4 . 5 f , Ġ 5 3 . 5 f ), ĊĠĠĠĠĠĠĠ ĠDevice Update Dto ( 1 3 , Ġ" id 1 ", Ġ 1 3 0 0 0 0 0 0 0 0 L , Ġ 7 0 , Ġ 3 . 6 5 f , Ġ 2 5 . 5 f , Ġ 5 2 . 5 f ), ĊĠĠĠĠĠĠĠ ĠDevice Update Dto ( 1 4 , Ġ" id 1 ", Ġ 1 4 0 0 0 0 0 0 0 0 L , Ġ 6 0 , Ġ 3 . 5 5 f , Ġ 2 6 . 5 f , Ġ 5 1 . 5 f ), ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġdatabase Devices Updates Ġ= Ġmutable ListOf < Device Update Entity >() ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġfetch All Device Updates ( id : ĠString ): ĠList < Device Update Dto > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( id Ġ!= Ġ" id 1 " Ġ&& Ġid Ġ!= Ġ" id 2 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠHttp Exception ( Response . error < String >( 4 0 4 , ĠEMPTY _ RESPONSE )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġbackend Device Updates . filter Ġ{ Ġit . deviceId Ġ== Ġid Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġfetch All Device Updates ( id : ĠString , Ġlimit : ĠInt ): ĠList < Device Update Dto > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( id Ġ!= Ġ" id 1 " Ġ&& Ġid Ġ!= Ġ" id 2 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠHttp Exception ( Response . error < String >( 4 0 4 , ĠEMPTY _ RESPONSE )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġbackend Device Updates . filter Ġ{ Ġit . deviceId Ġ== Ġid Ġ}. take ( limit ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġfetch Device Updates By Date ( ĊĠĠĠĠĠĠĠ Ġid : ĠString , ĊĠĠĠĠĠĠĠ Ġfrom : ĠLong , ĊĠĠĠĠĠĠĠ Ġto : ĠLong ĊĠĠĠ Ġ): ĠList < Device Update Dto > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( id Ġ!= Ġ" id 1 " Ġ&& Ġid Ġ!= Ġ" id 2 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠHttp Exception ( Response . error < String >( 4 0 4 , ĠEMPTY _ RESPONSE )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġbackend Device Updates . filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . deviceId Ġ== Ġid Ġ&& Ġit . timestamp Ġ>= Ġfrom Ġ&& Ġit . timestamp Ġ<= Ġto ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetAll Device Updates From Database ( deviceId : ĠString ) Ġ= Ġflow Ġ{ ĊĠĠĠĠĠĠĠ Ġemit ( database Devices Updates . map Ġ{ Ġit . to Device Update () Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetAll Device Updates From Database ( deviceId : ĠString , Ġlimit : ĠInt ) Ġ= Ġflow Ġ{ ĊĠĠĠĠĠĠĠ Ġemit ( database Devices Updates ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. take ( limit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . to Device Update () Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Device Updates By Date From Database ( deviceId : ĠString , Ġfrom : ĠLong , Ġto : ĠLong ) Ġ= Ġflow Ġ{ ĊĠĠĠĠĠĠĠ Ġemit ( database Devices Updates ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . update Time . to Long () Ġin Ġfrom .. to Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . to Device Update () Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġsave F etched Device Updates ( ĊĠĠĠĠĠĠĠ Ġdevice Updates : ĠList < Device Update Entity > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdevice Updates . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase Devices Updates . add ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }