package Ġcom . example . android . out draw . repository Ċ Ċ import Ġcom . example . android . out draw . database . Art Piece Data Ċ import Ġcom . example . android . out draw . database . Database Dao Ċ import Ġcom . example . android . out draw . database . Paint ing Ċ import Ġkotlinx . coroutines . Coroutine Dispatcher Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġjava . io . File Ċ Ċ /** Ċ Ġ* ĠRepository Ġfor Ġinteraction Ġwith Ġthe Ġdatabase Ċ Ġ*/ Ċ Ċ class ĠRepository ( private Ġval Ġdatabase Dao : ĠDatabase Dao , Ġprivate Ġval Ġio Dispatcher : ĠCor outine Dispatcher Ġ= ĠDispatch ers . IO ) Ġ{ ĊĊĠĠĠ Ġsuspend Ġfun Ġload Paint ings (): ĠList < Paint ing > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwith Context ( io Dispatcher ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase Dao . getAll () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġsave Paint ing ( paint ing : ĠPaint ing ) Ġ= ĊĠĠĠĠĠĠĠ Ġwith Context ( io Dispatcher ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase Dao . save Paint ing ( paint ing ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġdelete Paint ing ( paint ing : ĠPaint ing ) Ġ= ĊĠĠĠĠĠĠĠ Ġwith Context ( io Dispatcher ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase Dao . delete ( paint ing ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġupdate Art Piece () Ġ= ĊĠĠĠĠĠĠĠ Ġwith Context ( io Dispatcher ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase Dao . get Art Piece () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġsave Art Piece ( art Piece Data : ĠArt Piece Data ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwith Context ( io Dispatcher ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile ( update Art Piece () !!. primary Image ). delete () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase Dao . save Art Piece ( art Piece Data ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ