package Ġcom . k entr ino Ċ Ċ import Ġcom . k entr ino . db . U fo S ight ings Ċ import Ġcom . k entr ino . db . create Hikari DataSource Ċ import Ġio . ktor . client . HttpClient Ċ import Ġio . ktor . client . engine . c io . C IO Ċ import Ġio . ktor . client . engine . c io . endpoint Ċ import Ġio . ktor . client . features . json . Jack son Serializer Ċ import Ġio . ktor . client . features . json . Json Feature Ċ import Ġio . ktor . util . K tor Experimental API Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġorg . jetbrains . ex posed . sql . Database Ċ import Ġorg . jetbrains . ex posed . sql . Schema Utils Ċ import Ġorg . jetbrains . ex posed . sql . transactions . transaction Ċ import Ġorg . k oin . core . module . Module Ċ import Ġorg . k oin . dsl . module ĊĊ Ċ @ K tor Experimental API Ċ fun Ġmodule ( config : ĠConfig ): ĠModule Ġ= Ġmodule ( createdAt Start Ġ= Ġtrue ) Ġ{ ĊĠĠĠ Ġsingle < Database > Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠdataSource Ġ= Ġcreate Hikari DataSource () ĊĠĠĠĠĠĠĠ Ġval Ġconnection Ġ= ĠDatabase . connect ( dataSource ) ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction ( connection ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSchema Utils . create Missing Tables And Columns ( U fo S ight ings ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġconnection ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsingle Ġ{ ĊĠĠĠĠĠĠĠ ĠHttpClient ( C IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstall ( Json Feature ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġserializer Ġ= ĠJack son Serializer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġengine Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Connections Count Ġ= Ġ 1 0 0 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġendpoint Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠMaximum Ġnumber Ġof Ġrequests Ġfor Ġa Ġspecific Ġendpoint Ġroute . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Connections Per Route Ġ= Ġ 1 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠMax Ġsize Ġof Ġscheduled Ġrequests Ġper Ġconnection ( pipeline Ġqueue Ġsize ). ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpipeline MaxSize Ġ= Ġ 2 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠMax Ġnumber Ġof Ġmilliseconds Ġto Ġkeep Ġid d le Ġconnection Ġalive . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkeep Alive Time Ġ= Ġ 5 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠNumber Ġof Ġmilliseconds Ġto Ġwait Ġtrying Ġto Ġconnect Ġto Ġthe Ġserver . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnect Timeout Ġ= Ġ 5 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠMaximum Ġnumber Ġof Ġattempts Ġfor Ġretry ing Ġa Ġconnection . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnect Retry Attempts Ġ= Ġ 5 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsingle Ġ{ ĊĠĠĠĠĠĠĠ ĠY out rack Api () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsingle Ġ{ ĊĠĠĠĠĠĠĠ Ġconfig ĊĠĠĠ Ġ} Ċ } Ċ