package Ġcom . github . ker ub istan . ker ub . data . is pn Ċ Ċ import Ġcom . github . ker ub istan . ker ub . data . Audit Entry Dao Ċ import Ġcom . github . ker ub istan . ker ub . model . Add Entry Ċ import Ġcom . github . ker ub istan . ker ub . model . Audit Entry Ċ import Ġcom . github . ker ub istan . ker ub . model . Delete Entry Ċ import Ġcom . github . ker ub istan . ker ub . model . Update Entry Ċ import Ġcom . github . ker ub istan . ker ub . utils . by Id Ċ import Ġorg . in fin is pan . Advanced Cache Ċ import Ġorg . in fin is pan . query . Search Ċ import Ġorg . in fin is pan . query . dsl . Query Ċ import Ġorg . in fin is pan . query . dsl . QueryBuilder Ċ import Ġjava . util . UUID Ċ import Ġkotlin . reflect . K Class Ċ Ċ class ĠAudit Entry Dao Impl ( private Ġval Ġcache : ĠAdvanced Cache < UUID , ĠAudit Entry >) Ġ: ĠAudit Entry Dao Ġ{ Ċ ĉ override Ġfun Ġadd All ( entities : ĠCollection < Audit Entry >) Ġ{ Ċĉ ĉ cache . put All Async ( entities . by Id ()) Ċ ĉ } ĊĊ ĉ override Ġfun Ġadd ( entity : ĠAudit Entry ): ĠUUID Ġ{ Ċĉ ĉ cache . put Async ( entity . id , Ġentity ) Ċĉ ĉ return Ġentity . id Ċ ĉ } ĊĊ ĉ override Ġfun Ġlist ById ( id : ĠUUID ): ĠList < Audit Entry > Ġ= Ċĉĉ ĉ criteria ( builder ( Add Entry :: class ), Ġid ) Ġ+ Ċĉĉĉĉ ĉ criteria ( builder ( Update Entry :: class ), Ġid ) Ġ+ Ċĉĉĉĉ ĉ criteria ( builder ( Delete Entry :: class ), Ġid ) ĊĊ ĉ private Ġfun Ġbuilder ( clazz : ĠK Class <* >) Ġ= Ċĉĉ ĉ Search . getQuery Factory ( cache ). from ( clazz . java ) ĊĊ ĉ private Ġfun Ġcriteria ( builder : ĠQuery Builder <* >, Ġid : ĠUUID ): ĠList < Audit Entry > Ġ= Ċĉĉ ĉ builder Ċĉĉĉĉ ĉ . having ( Audit Entry :: id Str . name ). eq ( id . toString ()). to Builder < Query >() Ċĉĉĉĉ ĉ . build () !! Ċĉĉĉĉ ĉ . list < Audit Entry >() Ċ }