/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠSer gio ĠBel da Ċ Ġ* Ċ Ġ* Ġ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 Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// 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 Ġdev . ser gio bel da . tod ometer . common . data . database . dao Ċ Ċ import Ġcom . squareup . sql de light . runtime . coroutines . as Flow Ċ import Ġcom . squareup . sql de light . runtime . coroutines . map ToList Ċ import Ġcom . squareup . sql de light . runtime . coroutines . map ToOne OrNull Ċ import Ġdev . ser gio bel da . tod ometer . common . data . database . Task Entity Ċ import Ġdev . ser gio bel da . tod ometer . common . data . database . Tod ometer Database Ċ import Ġdev . ser gio bel da . tod ometer . common . domain . model . Task State Ċ import Ġkotlinx . coroutines . flow . Flow Ċ Ċ class ĠTask Dao ( private Ġval Ġdatabase : ĠTod ometer Database ) Ġ: ĠI Task Dao Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget Task ( id : ĠString ): ĠFlow < Task Entity ?> Ġ= ĊĠĠĠĠĠĠĠ Ġdatabase . task Entity Queries . select Task ( id ). as Flow (). map ToOne OrNull () ĊĊĠĠĠ Ġoverride Ġfun Ġget Tasks ( task List Id : ĠString ): ĠFlow < List < Task Entity >> Ġ= ĊĠĠĠĠĠĠĠ Ġdatabase . task Entity Queries . select Tasks By TaskList Id ( task List Id ). as Flow (). map ToList () ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġinsert Task ( task : ĠTask Entity ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġdatabase . task Entity Queries . insert Or Replace Task ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġtask . id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġtask . title , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġtask . description , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= Ġtask . state , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtag Ġ= Ġtask . tag , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask list _ id Ġ= Ġtask . task list _ id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsync Ġ= Ġtask . sync , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdue Date Ġ= Ġtask . due Date ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ// ĠTODO ĠCall Ġreturn Ġlast _ insert _ row id () Ġfrom ĠSQL Del ight . ĊĠĠĠĠĠĠĠ Ġreturn Ġtask . id ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġinsert Tasks ( tasks : ĠList < Task Entity >) Ġ= ĊĠĠĠĠĠĠĠ Ġtasks . forEach Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Task ( task ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġupdate Task ( task : ĠTask Entity ) Ġ= ĊĠĠĠĠĠĠĠ Ġdatabase . task Entity Queries . update Task ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġtask . id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġtask . title , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġtask . description , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtag Ġ= Ġtask . tag , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdue Date Ġ= Ġtask . due Date ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġupdate Task Sync ( id : ĠString , Ġsync : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdatabase . task Entity Queries . update Task Sync ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsync Ġ= Ġsync ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġupdate Task State ( id : ĠString , Ġstate : ĠTask State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdatabase . task Entity Queries . update Task State ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= Ġstate ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġdelete Task ( id : ĠString ) Ġ= Ġdatabase . task Entity Queries . delete Task ( id ) Ċ } Ċ