package Ġorg . task . manager . data . repository Ċ Ċ import Ġorg . task . manager . data . local . model . to Domain Ċ import Ġorg . task . manager . data . local . model . to Entity Ċ import Ġorg . task . manager . data . local . source . Audio visual Local DataSource Ċ import Ġorg . task . manager . data . network . model . request . to Request Ċ import Ġorg . task . manager . data . network . model . response . to Domain Ċ import Ġorg . task . manager . data . network . source . Audio visual Remote DataSource Ċ import Ġorg . task . manager . domain . Result Ċ import Ġorg . task . manager . domain . model . Audio visual Ċ import Ġorg . task . manager . domain . model . Platform Ċ import Ġorg . task . manager . domain . model . Title Ċ import Ġorg . task . manager . domain . repository . Audio visual Repository Ċ Ċ class ĠDefault Audio visual Repository ( private Ġval Ġremote DataSource : ĠAudio visual Remote DataSource , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġlocal DataSource : ĠAudio visual Local DataSource Ċ ) Ġ: ĠAudio visual Repository Ġ{ ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġsave ( audio visual : ĠAudio visual ): ĠResult < Audio visual > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaudio visual Response Ġ= Ġremote DataSource . create ( audio visual . to Request ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Audio visual Ġ= Ġaudio visual Response . to Domain () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocal DataSource . save ( new Audio visual . to Entity ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . Success ( new Audio visual ) ĊĠĠĠĠĠĠĠ Ġ} Ġ Ġcatch Ġ( ex : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . Error ( ex ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġupdate ( audio visual : ĠAudio visual ): ĠResult < Audio visual > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaudio visual Response Ġ= Ġremote DataSource . update ( audio visual . to Request ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġupdated Audio visual Ġ= Ġaudio visual Response . to Domain () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocal DataSource . update ( updated Audio visual . to Entity ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . Success ( updated Audio visual ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . Error ( ex ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun ĠgetAll (): ĠResult < List < Audio visual >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaudio visual s Ġ= Ġlocal DataSource . findAll (). map Ġ{ Ġit . to Domain () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( audio visual s . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Audio visual s Ġ= Ġremote DataSource . findAll (). map Ġ{ Ġit . to Domain () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocal DataSource . save All ( new Audio visual s . map Ġ{ Ġit . to Entity () Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult . Success ( new Audio visual s ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult . Success ( audio visual s ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . Error ( ex ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġremove ( id : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġremote DataSource . delete ( id ) ĊĠĠĠĠĠĠĠ Ġlocal DataSource . delete ( id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun ĠgetAll Titles (): ĠResult < List < Title >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitles Ġ= Ġlocal DataSource . findAll Titles (). map Ġ{ Ġit . to Domain () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( titles . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Titles Ġ= Ġremote DataSource . getAll Titles (). map Ġ{ Ġit . to Domain () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocal DataSource . save All Titles ( new Titles . map Ġ{ Ġit . to Entity () Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult . Success ( new Titles ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult . Success ( titles ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . Error ( ex ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun ĠgetAll Platforms (): ĠResult < List < Platform >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplatforms Ġ= Ġlocal DataSource . findAll Platforms (). map Ġ{ Ġit . to Domain () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( platforms . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Platforms Ġ= Ġremote DataSource . getAll Platforms (). map Ġ{ Ġit . to Domain () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocal DataSource . save All Platforms ( new Platforms . map Ġ{ Ġit . to Entity () Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ ĠResult . Success ( new Platforms ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult . Success ( platforms ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . Error ( ex ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }