package Ġcom . chen . base module . room Ċ Ċ import Ġandroidx . sqlite . db . Simple SQLite Query Ċ import Ġcom . chen . base module . room . Data Base Category . SUFFIX _ CACHE Ċ import Ġcom . chen . base module . base m . Base Room Bean Ċ import Ġkotlin . coroutines . resume Ċ import Ġkotlin . coroutines . suspend Coroutine Ċ import Ġkotlin . reflect . K Class Ċ Ċ /** Ċ Ġ* Ġ ĠCreated Ġby Ġch en Ġon Ġ 2 0 1 9 / 1 0 / 2 8 Ċ Ġ**/ Ċ abstract Ġclass ĠBase Cache Dao < T Ġ: ĠBase Room Bean >( private Ġval Ġclazz : ĠK Class < T >) Ġ: ĠBase Dao < T > Ġ{ ĊĊĠĠĠ Ġval Ġsimple Name Ġby Ġlazy Ġ{ Ġclazz . simple Name Ġ} ĊĊĠĠĠ Ġopen Ġvar Ġorder : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġopen Ġsuspend Ġfun Ġlist Cache ( category : ĠString Ġ= Ġ"") : ĠMutable List < T > Ġ= Ġsuspend Coroutine { ĊĠĠĠĠĠĠĠ Ġval Ġc ate Ġ= Ġ"% $ category ${ SUFFIX _ CACHE }" ĊĠĠĠĠĠĠĠ Ġval ĠorderBy : ĠString Ġ= Ġif Ġ( order . isNull OrEmpty ()) Ġ"" Ġelse Ġ" ORDER ĠBY Ġ$ order ĠASC " ĊĠĠĠĠĠĠĠ Ġit . resume ( list ( Simple SQLite Query (" SELECT Ġ* ĠFROM Ġ$ simple Name ĠWHERE Ġcategory ĠLIKE Ġ'$ cate ' Ġ$ orderBy "))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġdelete All ( category : ĠString Ġ= Ġ"") Ġ= Ġsuspend Coroutine < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġdelete All ( Simple SQLite Query (" DELETE ĠFROM Ġ$ simple Name ĠWHERE Ġcategory Ġ= Ġ'$ category ' ")) ĊĠĠĠĠĠĠĠ Ġit . resume ( Unit ) ĊĠĠĠ Ġ} Ċ }