package Ġme . ab err ant fox . hot bot . database ĊĊ Ċ import Ġnet . dv 8 tion . j da . core . entities . User Ċ import Ġorg . jetbrains . ex posed . sql .* Ċ import Ġorg . jetbrains . ex posed . sql . transactions . transaction Ċ Ċ data Ġclass ĠK arma Record ( val Ġwho : ĠString , Ġval Ġk arma : ĠInt ) Ċ Ċ fun Ġleader Board () Ġ= Ġtransaction Ġ{ ĊĠĠĠ ĠK arma Table . selectAll (). orderBy ( K arma Table . karma , Ġfalse ). limit ( 1 0 ). toList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠK arma Record ( it [ K arma Table . member ], Ġit [ K arma Table . karma ]) Ġ} Ċ } Ċ Ċ fun Ġadd K arma ( user : ĠUser , Ġamount : ĠInt ) Ġ= Ġtransaction Ġ{ ĊĠĠĠ Ġval Ġk arma Ġ= Ġget K arma ( user ) Ġ+ Ġamount ĊĠĠĠ Ġset K arma ( user , Ġk arma ) Ċ } Ċ Ċ fun Ġget K arma ( user : ĠUser ) Ġ= Ġtransaction Ġ{ ĊĠĠĠ Ġif ( has K arma ( user )) Ġ{ ĊĠĠĠĠĠĠĠ ĠK arma Table . select ( Op . build Ġ{ ĠK arma Table . member Ġeq Ġuser . id Ġ}). first ()[ K arma Table . karma ] ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġset K arma ( user , Ġ 0 ) ĊĠĠĠĠĠĠĠĠ 0 ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġset K arma ( user : ĠUser , Ġamount : ĠInt ): ĠUnit Ġ= Ġtransaction Ġ{ ĊĠĠĠ Ġif ( Ġ!( has K arma ( user )) Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠK arma Table . insert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit [ K arma Table . member ] Ġ= Ġuser . id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit [ K arma Table . karma ] Ġ= Ġamount ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ ĠK arma Table . update ({ ĠK arma Table . member Ġeq Ġuser . id Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( Sql Expression Builder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ K arma Table . karma ] Ġ= Ġamount ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ fun Ġhas K arma ( user : ĠUser ) Ġ= Ġtransaction Ġ{ ĊĠĠĠ ĠK arma Table . select ( Op . build Ġ{ ĠK arma Table . member Ġeq Ġuser . id Ġ}). count () Ġ> Ġ 0 Ċ } Ċ Ċ fun Ġremove K arma ( user : ĠUser ) Ġ= Ġtransaction Ġ{ ĊĠĠĠ ĠK arma Table . delete Where Ġ{ ĠOp . build Ġ{ ĠK arma Table . member Ġeq Ġuser . id Ġ} Ġ} Ċ }