package Ġmain . kotlin . repository Ċ Ċ import Ġbr . com . m ng . pan orama . model . A just es F ech amentos DB Ċ import Ġcom . zaxxer . hikari . HikariConfig Ċ import Ġcom . zaxxer . hikari . Hikari DataSource Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġorg . jetbrains . ex posed . sql . Database Ċ import Ġorg . jetbrains . ex posed . sql . Schema Utils Ċ import Ġorg . jetbrains . ex posed . sql . transactions . transaction Ċ Ċ object ĠDatabase Factory Ġ{ ĊĊĠ Ġfun Ġinit () Ġ{ ĊĠĠĠ ĠDatabase . Companion . connect ( hikari ()) ĊĊĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠ ĠSchema Utils . create ( A just es F ech amentos DB ) ĊĠĠĠĠĠ ĠSchema Utils . create Missing Tables And Columns ( A just es F ech amentos DB ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠTODO Ġload Ġconfiguration Ġfrom Ġa Ġconfig Ġfile ĊĠĠ Ġ*/ ĊĠ Ġprivate Ġfun Ġh ikari (): ĠH ikari DataSource Ġ{ ĊĠĠĠ Ġval Ġconfig Ġ= ĠH ikariConfig () ĊĠĠĠ Ġconfig . jdbc Url Ġ= ĠSystem . getenv (" JDBC _ DATABASE _ URL ") ĊĠĠĠ Ġconfig . maximum PoolSize Ġ= Ġ 3 ĊĠĠĠ Ġconfig . is Auto Commit Ġ= Ġfalse ĊĠĠĠ Ġconfig . transaction Isolation Ġ= Ġ" TRANSACTION _ REPEAT ABLE _ READ " ĊĠĠĠ Ġconfig . validate () ĊĠĠĠ Ġreturn ĠH ikari DataSource ( config ) ĊĠ Ġ} ĊĊĊĠ Ġsuspend Ġfun Ġ< T > Ġdb Query ( block : Ġ() Ġ-> ĠT ): ĠT Ġ= ĊĠĠĠ Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠ Ġtransaction Ġ{ Ġblock () Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ