package Ġcom . example . the product ivity app . ui . ViewModels Ċ Ċ import Ġandroidx . h ilt . lifecycle . ViewModel Inject Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . example . the product ivity app . Repository . Main Repository Ċ import Ġcom . example . the product ivity app . db . Graph Todo Ċ import Ġcom . example . the product ivity app . db . Reminder Ċ import Ġcom . example . the product ivity app . db . Todo Ċ import Ġdagger . h ilt . android . lifecycle . H ilt ViewModel Ċ import Ġkotlinx . coroutines . launch Ċ import Ġtim ber . log . Tim ber Ċ import Ġjavax . inject . Inject Ċ Ċ @ H ilt ViewModel Ċ class ĠMain ViewModel Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġmain Repository : ĠMain Repository Ċ ) Ġ: ĠViewModel (){ ĊĊĠĠĠ Ġvar Ġtodos : ĠLive Data < List < Todo >> Ġ= Ġmain Repository . getAll Todos () ĊĠĠĠ Ġvar Ġgraph Todos : ĠLive Data < List < Graph Todo >> Ġ= Ġmain Repository . getAll Graph Todos () ĊĠĠĠ Ġvar Ġrem inders : ĠLive Data < List < Reminder >> Ġ= Ġmain Repository . getAll Rem inders () ĊĊĠĠĠ Ġfun Ġreminder By Timestamp ( time Stamp : ĠLong ): ĠLive Data < List < Reminder >> Ġ= Ġmain Repository . get Reminder ( time Stamp ) ĊĊĠĠĠ Ġfun Ġinsert Reminder ( reminder : ĠRem inder ){ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain Repository . insert Reminder ( reminder ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete Reminder ( reminder : ĠRem inder ){ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain Repository . delete Reminder ( reminder ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Reminder ( reminder : ĠRem inder ){ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain Repository . update Reminder ( reminder ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete All Graph Entries () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain Repository . delete All () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Todo By TAG ( tag : ĠString ) Ġ= Ġmain Repository . get Todo By Tag ( tag ) ĊĠĠĠ Ġfun Ġget Todo By TimeStamp ( time Stamp : ĠLong ) Ġ= Ġmain Repository . get Todo By TimeStamp ( time Stamp ) ĊĊĠĠĠ Ġfun Ġget ById ( req Id : ĠInt ) Ġ= Ġmain Repository . getById ( req Id ) ĊĊĠĠĠ Ġfun Ġinsert ( todo : ĠTodo ): Long Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġk : ĠLong Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk Ġ= Ġmain Repository . insert Todo ( todo ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġk ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinsert Graph ( graph Todo : ĠGraph Todo ) Ġ= ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠ Ġmain Repository . insert Graph ( graph Todo ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete Graph ( graph Todo : ĠGraph Todo ) Ġ= ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠ Ġmain Repository . delete Graph ( graph Todo ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Graph ( graph Todo : ĠGraph Todo ) Ġ= ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠ Ġmain Repository . update Graph ( graph Todo ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate ( todo : ĠTodo ) Ġ= ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠ Ġmain Repository . update Todo ( todo ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete ( todo : ĠTodo ) Ġ= ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠ Ġmain Repository . delete Todo ( todo ) ĊĠĠĠ Ġ} Ċ }