package Ġcom . raph ael bus sa . database Ċ Ċ import Ġcom . raph ael bus sa . database . entity . Session Ċ import Ġcom . raph ael bus sa . database . table . Sessions Ċ import Ġorg . jetbrains . ex posed . sql . and Ċ Ċ interface ĠDatabase Dao Ġ{ ĊĊĠĠĠ Ġsuspend Ġfun Ġget Active Sessions Count (): ĠLong ĊĊĠĠĠ Ġsuspend Ġfun Ġget Session ById ( chat Id : ĠLong ): ĠSession ĊĊĠĠĠ Ġsuspend Ġfun Ġsave Leader board Id ( chat Id : ĠLong , Ġleader board Id : ĠInt ) ĊĊĠĠĠ Ġsuspend Ġfun Ġsave Cookie ( chat Id : ĠLong , Ġcookie : ĠString ) ĊĊĠĠĠ Ġsuspend Ġfun Ġdelete Session ( chat Id : ĠLong ) Ċ Ċ } Ċ Ċ object ĠReal Database Dao Ġ: ĠDatabase Dao Ġ{ ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġget Active Sessions Count (): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġexecute Transaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ execute Transaction ĠSession . find Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠS essions . leader board Id Ġne q Ġ"" Ġand Ġ( Sessions . cookie Ġne q Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. count () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġget Session ById ( chat Id : ĠLong ): ĠSession Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġexecute Transaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ execute Transaction ĠSession . findById ( chat Id ) Ġ?: ĠSession . new ( chat Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleader board Id Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcookie Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġsave Leader board Id ( chat Id : ĠLong , Ġleader board Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġexecute Transaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsession Ġ= Ġget Session ById ( chat Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession . leader board Id Ġ= Ġleader board Id . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġsave Cookie ( chat Id : ĠLong , Ġcookie : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġexecute Transaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsession Ġ= Ġget Session ById ( chat Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession . cookie Ġ= Ġcookie ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġdelete Session ( chat Id : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġexecute Transaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSession . findById ( chat Id )?. delete () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }