package Ġapp . sh yn line . j ikan ium . data . requests . by genre . local Ċ Ċ import Ġapp . sh yn line . j ikan ium . data . Result Ċ import Ġapp . sh yn line . j ikan ium . data . Result . Error Ċ import Ġapp . sh yn line . j ikan ium . data . requests . by genre . An ime Page Wrapper Ċ import Ġapp . sh yn line . j ikan ium . data . requests . by genre . Genre DataSource Ċ import Ġapp . sh yn line . j ikan ium . data . requests . by genre . db . An ime Part Ċ import Ġapp . sh yn line . j ikan ium . data . requests . by genre . db . Genre With Page Ċ import Ġkotlinx . coroutines . Coroutine Dispatcher Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . with Context Ċ Ċ /*** Ċ Ġ* ĠLocal Ġimplementation Ġof Ġgenre Ġdata Ġsource Ċ Ġ*/ Ċ class ĠLocal Genre DataSource ( ĊĠĠĠ Ġprivate Ġval Ġgenre Dao : ĠGen re Dao , ĊĠĠĠ Ġprivate Ġval Ġio Dispatcher : ĠCor outine Dispatcher Ġ= ĠDispatch ers . IO Ċ ) Ġ: ĠGen re DataSource Ġ{ ĊĊĠĠĠ Ġ/** * ĊĠĠĠĠ Ġ* ĠGet Ġa Ġspecific Ġgenre Ġwith Ġits Ġpages Ġif Ġexists ĊĠĠĠĠ Ġ* Ġif Ġnot Ġreturn ĠError Ġresult ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġget An ime Genre ( genre : ĠInt ): ĠResult < Genre With Page > Ġ= ĊĠĠĠĠĠĠĠ Ġwith Context ( io Dispatcher ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ with Context Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgenre With Page Ġ= Ġgenre Dao . get An ime Genre ( genre ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( genre With Page Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . Success ( genre With Page ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠError ( Exception (" Genre With Page Ġnot Ġfound ! ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠError ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** * ĊĠĠĠĠ Ġ* ĠInsert Ġa Ġgenre Ġwith Ġits Ġpages Ġinto Ġgenre Ġdao ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġinsert An ime Genre ( genre With Page : ĠGen re With Page ) Ġ= ĊĠĠĠĠĠĠĠ Ġwith Context ( io Dispatcher ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenre Dao . insert Genre ( genre With Page . genre ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenre Dao . insert Pages ( genre With Page . pages ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** * ĊĠĠĠĠ Ġ* ĠUpdate Ġa Ġgenre Ġwith Ġits Ġpages Ġinto Ġgenre Ġdao ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġupdate An ime Genre ( genre With Page : ĠGen re With Page ) Ġ{ ĊĠĠĠĠĠĠĠ Ġgenre Dao . update Genre ( genre With Page . genre ) ĊĠĠĠĠĠĠĠ Ġgenre Dao . update Pages ( genre With Page . pages ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** * ĊĠĠĠĠ Ġ* ĠNot Ġsupported Ġhere ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġget An ime Genre By Page ( genre : ĠInt , Ġpage : ĠInt ): ĠResult < An ime Page Wrapper > Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException (" Not Ġsupported !") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** * ĊĠĠĠĠ Ġ* ĠGet Ġan ime Ġpart Ġcollection ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġget An ime Part Collection ( id : ĠList < Long >): ĠResult < List < An ime Part >> Ġ= ĊĠĠĠĠĠĠĠ Ġwith Context ( io Dispatcher ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ with Context Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġan ime Ġ= Ġgenre Dao . get An ime Part Collection ById ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( anime . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . Success ( anime ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠError ( Exception (" An ime Ġnot Ġfound ! ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠError ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** * ĊĠĠĠĠ Ġ* ĠInsert Ġa Ġcollection Ġof Ġan ime Ġpart ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġinsert Collection Of An ime Part ( anime : ĠList < An ime Part >) Ġ{ ĊĠĠĠĠĠĠĠ Ġgenre Dao . insert Collection Of An ime Part ( anime ) ĊĠĠĠ Ġ} Ċ Ċ }