/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠLe ah ĠN ich ita Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . fer elin . data _ local . repos i rot ires Ċ Ċ import Ġcom . fer elin . domain . entities . Company Ċ import Ġcom . fer elin . domain . entities . Company With Stock Price Ċ import Ġcom . fer elin . domain . repositories . companies . Comp anies Local Repo Ċ import Ġcom . fer elin . data _ local . database . Comp anies Dao Ċ import Ġcom . fer elin . data _ local . map pers . Company Mapper Ċ import Ġcom . fer elin . shared . Dispatch ers Provider Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġtim ber . log . Tim ber Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠComp anies Repo Impl Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġcompanies Dao : ĠComp anies Dao , ĊĠĠĠ Ġprivate Ġval Ġcompany Mapper : ĠCompany Mapper , ĊĠĠĠ Ġprivate Ġval Ġdispatch ers Provider : ĠDispatch ers Provider Ċ ) Ġ: ĠComp anies Local Repo Ġ{ ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġinsert All ( companies : ĠList < Company >) Ġ= ĊĠĠĠĠĠĠĠ Ġwith Context ( dispatch ers Provider . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" insert Ġall Ġ( size Ġ= Ġ${ companies . size }) ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompanies Dao . insert All ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Ġ= Ġcompanies . map ( company Mapper :: map ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun ĠgetAll (): ĠList < Company With Stock Price > Ġ= ĊĠĠĠĠĠĠĠ Ġwith Context ( dispatch ers Provider . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" get Ġall ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompanies Dao ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getAll () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map ( company Mapper :: map ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun ĠgetAll F avour ites (): ĠList < Company With Stock Price > Ġ= ĊĠĠĠĠĠĠĠ Ġwith Context ( dispatch ers Provider . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" get Ġall Ġfavour ites ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompanies Dao ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getAll F avour ites () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map ( company Mapper :: map ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġrollback To Default () Ġ= ĊĠĠĠĠĠĠĠ Ġwith Context ( dispatch ers Provider . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" rollback Ġto Ġdefault ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompanies Dao . rollback To Default () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġupdate Is F avour ite ( ĊĠĠĠĠĠĠĠ Ġcompany Id : ĠInt , ĊĠĠĠĠĠĠĠ Ġis F avour ite : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġadded ByIndex : ĠInt ĊĠĠĠ Ġ) Ġ= Ġwith Context ( dispatch ers Provider . IO ) Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . d ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" update Ġis Ġfavour ite Ġ( company Id Ġ= Ġ$ company Id ," Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġis F avour ite Ġ= Ġ$ is F avour ite , Ġadded ByIndex Ġ= Ġ$ added ByIndex )" ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġcompanies Dao . update Is F avour ite ( company Id , Ġis F avour ite , Ġadded ByIndex ) ĊĠĠĠ Ġ} Ċ }