package Ġme . me li jn . me lij nb ot . database . filter Ċ Ċ import Ġcom . fasterxml . jackson . module . kotlin . readValue Ċ import Ġme . me li jn . me lij nb ot . database . HIG HER _ CACHE Ċ import Ġme . me li jn . me lij nb ot . database . NORMAL _ CACHE Ċ import Ġme . me li jn . me lij nb ot . object Mapper Ċ Ċ class ĠFilter Group Wrapper ( private Ġval Ġfilter Group Dao : ĠFilter Group Dao ) Ġ{ ĊĊĠĠĠ Ġsuspend Ġfun Ġget Groups ( guild Id : ĠLong ): ĠList < Filter Group > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcached Ġ= Ġfilter Group Dao . getCache Entry ( guild Id , ĠH IG HER _ CACHE )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠobjectMapper . readValue < List < Filter Group >>( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( cached Ġ!= Ġnull ) Ġreturn Ġcached ĊĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġfilter Group Dao . get ( guild Id ) ĊĠĠĠĠĠĠĠ Ġfilter Group Dao . set Cache Entry ( guild Id , ĠobjectMapper . writeValue AsString ( list ), ĠNORMAL _ CACHE ) ĊĠĠĠĠĠĠĠ Ġreturn Ġlist ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġput Group ( guild Id : ĠLong , Ġgroup : ĠFilter Group ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġget Groups ( guild Id ). to Mutable List () ĊĠĠĠĠĠĠĠ Ġlist . remove If Ġ{ Ġ( groupId ) Ġ-> ĠgroupId Ġ== Ġgroup . filter GroupName Ġ} ĊĠĠĠĠĠĠĠ Ġlist . add ( group ) ĊĠĠĠĠĠĠĠ Ġfilter Group Dao . set Cache Entry ( guild Id , ĠobjectMapper . writeValue AsString ( list ), ĠNORMAL _ CACHE ) ĊĠĠĠĠĠĠĠ Ġfilter Group Dao . add ( guild Id , Ġgroup ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġdelete Group ( guild Id : ĠLong , Ġgroup : ĠFilter Group ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġget Groups ( guild Id ). to Mutable List () ĊĠĠĠĠĠĠĠ Ġlist . remove If Ġ{ Ġ( groupId ) Ġ-> ĠgroupId Ġ== Ġgroup . filter GroupName Ġ} ĊĠĠĠĠĠĠĠ Ġfilter Group Dao . set Cache Entry ( guild Id , ĠobjectMapper . writeValue AsString ( list ), ĠNORMAL _ CACHE ) ĊĠĠĠĠĠĠĠ Ġfilter Group Dao . remove ( guild Id , Ġgroup ) ĊĠĠĠ Ġ} Ċ }