package Ġrepository Ċ Ċ import Ġcom . zaxxer . hikari . HikariConfig Ċ import Ġcom . zaxxer . hikari . Hikari DataSource Ċ import Ġorg . jetbrains . ex posed . sql . Database Ċ import Ġorg . jetbrains . ex posed . sql . Schema Utils Ċ import Ġorg . jetbrains . ex posed . sql . transactions . experimental . new Sus pended Transaction Ċ import Ġorg . jetbrains . ex posed . sql . transactions . transaction Ċ import Ġrepository . resource . Resource Table Ċ Ċ object ĠDatabase Factory Ġ{ ĊĠĠĠ Ġfun Ġinit ( ĊĠĠĠĠĠĠĠ Ġdriver : ĠString , ĊĠĠĠĠĠĠĠ Ġurl : ĠString , ĊĠĠĠĠĠĠĠ Ġusername : ĠString Ġ= Ġ"", ĊĠĠĠĠĠĠĠ Ġpassword : ĠString Ġ= Ġ"", ĊĠĠĠĠĠĠĠ Ġdrop : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= ĠH ikariConfig (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdriver ClassName Ġ= Ġdriver ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjdbc Url Ġ= Ġurl ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . username Ġ= Ġusername ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . password Ġ= Ġpassword ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmaximum PoolSize Ġ= Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Auto Commit Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Isolation Ġ= Ġ" TRANSACTION _ REPEAT ABLE _ READ " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġds Ġ= ĠH ikari DataSource ( config ) ĊĠĠĠĠĠĠĠ ĠDatabase . connect ( ds ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( drop ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSchema Utils . drop ( Resource Table ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSchema Utils . create Missing Tables And Columns ( Resource Table ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġ< T > Ġquery ( ĊĠĠĠĠĠĠĠ Ġblock : Ġsuspend Ġ() Ġ-> ĠT ĊĠĠĠ Ġ): ĠT Ġ= Ġnew Sus pended Transaction Ġ{ Ġblock () Ġ} Ċ }