package Ġme . me li jn . me lij nb ot . database . prefix Ċ Ċ import Ġcom . google . common . cache . Cache Builder Ċ import Ġme . me li jn . me lij nb ot . database . FREQ U ENT LY _ USED _ CACHE Ċ import Ġme . me li jn . me lij nb ot . objects . threading . Task Manager Ċ import Ġme . me li jn . me lij nb ot . objects . utils . loading Cache From Ċ import Ġjava . util . concurrent . Comp letableFuture Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ class ĠGuild Prefix Wrapper ( private Ġval Ġtask Manager : ĠTask Manager , Ġprivate Ġval Ġguild Prefix Dao : ĠGuild Prefix Dao ) Ġ{ ĊĊĠĠĠ Ġval Ġprefix Cache Ġ= ĠCache Builder . newBuilder () ĊĠĠĠĠĠĠĠ Ġ. expire After Access ( FREQ U ENT LY _ USED _ CACHE , ĠTimeUnit . MIN UTES ) ĊĠĠĠĠĠĠĠ Ġ. build ( loading Cache From < Long , ĠList < String >> Ġ{ Ġkey Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Prefixes ( key ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠ Ġprivate Ġfun Ġget Prefixes ( guild Id : ĠLong ): ĠCompletableFuture < List < String >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprefixes Ġ= ĠCompletableFuture < List < String >>() ĊĠĠĠĠĠĠĠ Ġtask Manager . async Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprefixes String Ġ= Ġguild Prefix Dao . get ( guild Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist : ĠList < String > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( prefixes String Ġ== Ġ"") Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġprefixes String . split ("% SPLIT % ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprefixes . complete ( list ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġprefixes ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġadd Prefix ( guild Id : ĠLong , Ġprefix : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprefix List Ġ= Ġprefix Cache . get ( guild Id ). get (). to Mutable List () ĊĠĠĠĠĠĠĠ Ġif Ġ(! prefix List . contains ( prefix )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprefix List . add ( prefix ) ĊĠĠĠĠĠĠĠ Ġset Prefixes ( guild Id , Ġprefix List ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġset Prefixes ( guild Id : ĠLong , Ġprefix List : ĠList < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprefixes Ġ= Ġprefix List . join ToString ("% SPLIT % ") ĊĠĠĠĠĠĠĠ Ġguild Prefix Dao . set ( guild Id , Ġprefixes ) ĊĠĠĠĠĠĠĠ Ġprefix Cache . put ( guild Id , ĠCompletableFuture . completed Future ( prefix List )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġremove Prefix ( guild Id : ĠLong , Ġprefix : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprefix List Ġ= Ġprefix Cache . get ( guild Id ). get (). to Mutable List () ĊĠĠĠĠĠĠĠ Ġprefix List . remove ( prefix ) ĊĠĠĠĠĠĠĠ Ġset Prefixes ( guild Id , Ġprefix List ) ĊĠĠĠ Ġ} Ċ }