package Ġw tf . test . my application . workers Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Log Ċ import Ġandroidx . work . Coroutine Worker Ċ import Ġandroidx . work . Worker Parameters Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . reflect . Type Token Ċ import Ġcom . google . gson . stream . Json Reader Ċ import Ġkotlinx . coroutines . coroutine Scope Ċ import Ġw tf . test . my application . data . models . Product Ċ import Ġw tf . test . my application . utils . App Database Ċ Ċ class ĠSeed Database Worker ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġworker Params : ĠWorker Parameters Ċ ) Ġ: ĠCor outine Worker ( context , Ġworker Params ) Ġ{ ĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġdo Work (): ĠResult Ġ= Ġcoroutine Scope Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapplication Context . assets . open (" products . json "). use Ġ{ ĠinputStream Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Reader ( inputStream . reader ()). use Ġ{ Ġjson Reader Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproduct Type Ġ= Ġobject Ġ: ĠType Token < List < Product >>() Ġ{} . type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproducts : ĠList < Product > Ġ= ĠGson (). fromJson ( json Reader , Ġproduct Type ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdatabase Ġ= ĠApp Database . getInstance ( application Context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . product Dao (). insert All ( products ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . success () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" Seed Database Worker ", Ġ" Error Ġseed ing Ġdatabase ", Ġex ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . failure () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }