package Ġio . ktor . samples . hello Ċ Ċ import Ġcom . google . gson . Gson Ċ import Ġorg . jetbrains . ex posed . sql . Database Ċ import Ġorg . jetbrains . ex posed . sql . Table Ċ import Ġorg . jetbrains . ex posed . sql . select Ċ import Ġorg . jetbrains . ex posed . sql . selectAll Ċ import Ġorg . jetbrains . ex posed . sql . transactions . transaction Ċ Ċ object ĠUser Ġ: ĠTable (" user ") Ġ{ ĊĠĠĠ Ġval Ġid Ġ= Ġinteger (" id ") ĊĠĠĠ Ġval Ġname Ġ= Ġvarchar (" name ", Ġlength = 5 0 ) ĊĠĠĠ Ġval Ġemail Ġ= Ġvarchar (" email ", Ġlength = 5 0 ) Ċ } Ċ Ċ data Ġclass ĠUsers ( val Ġid : ĠInt , Ġval Ġname : ĠString , Ġval Ġemail : ĠString ) Ċ Ċ fun Ġinit DB () Ġ{ ĊĠĠĠ Ġval Ġenv : ĠMutable Map < String , ĠString > Ġ= ĠSystem . getenv () ĊĠĠĠ Ġval Ġurl Ġ= Ġ" jdbc : mysql ://${ env [" DB _ USERNAME "] }:${ env [" DB _ PASSWORD "] }@ ${ env [" DB _ HOST "] }:${ env [" DB _ PORT "] }/${ env [" DB _ DATABASE "]} ? use Unicode = true & server Timezone = UTC & use SSL = false " ĊĠĠĠ Ġval Ġdriver Ġ= Ġ" com . mysql . cj . jdbc . Driver " ĊĠĠĠ ĠDatabase . connect ( url , Ġdriver ) Ċ } Ċ Ċ fun Ġget Top Five UserData (): ĠString Ġ{ ĊĠĠĠ Ġvar Ġjson Ġ= Ġ"" ĊĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġres Ġ= ĠUser . selectAll (). orderBy ( User . id , Ġfalse ). limit ( 5 ) ĊĠĠĠĠĠĠĠ Ġval Ġc Ġ= ĠArrayList < Users >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( f Ġin Ġres ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc . add ( Users ( id Ġ= Ġf [ User . id ], Ġname Ġ= Ġf [ User . name ], Ġemail Ġ= Ġf [ User . email ])) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġjson Ġ= ĠGson (). toJson ( c ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġjson Ċ } Ċ Ċ fun ĠgetUser ById ( userId : ĠInt ): ĠUsers ? Ġ{ ĊĠĠĠ Ġvar Ġuser : ĠUsers ? Ġ= Ġnull ĊĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠUser . select Ġ{ ĠUser . id . eq ( userId ) Ġ}. first OrNull () ĊĠĠĠĠĠĠĠ Ġif Ġ( result Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Ġ= ĠUsers ( id Ġ= Ġresult [ User . id ], Ġname Ġ= Ġresult [ User . name ], Ġemail Ġ= Ġresult [ User . email ]) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġuser Ċ }