package Ġme . por ge . notes . helpers Ċ Ċ import Ġcom . zaxxer . hikari . HikariConfig Ċ import Ġcom . zaxxer . hikari . Hikari DataSource Ċ import Ġorg . jetbrains . ex posed . sql . Database Ċ Ċ object ĠH ikari Factory Ġ{ ĊĠĠĠ Ġfun Ġcreate ( jdbc Url : ĠString , Ġusername : ĠString ?, Ġpassword : ĠString ?): ĠH ikari DataSource Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= ĠH ikariConfig (). also Ġ{ Ġcfg Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcfg . jdbc Url Ġ= Ġjdbc Url . to Jdbc Url () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcfg . driver ClassName Ġ= Ġ" org . postgresql . ds . PG Simple DataSource " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġusername ?. let Ġ{ Ġcfg . username Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword ?. let Ġ{ Ġcfg . password Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠH ikari DataSource ( config ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( driver ClassName ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠString . to Jdbc Url (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjdbc Prefix Ġ= Ġ" jdbc : postgresql ://" ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġreplace ("( jdbc : )? postgres ( ql )? :// ". to Regex (), Ġ"") ĊĊĠĠĠĠĠĠĠ Ġif Ġ( url . contains ("@ ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Parts Ġ= Ġurl . split ("@ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Credentials Ġ= Ġurl Parts [ 0 ]. split (": ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"$ jdbc Prefix ${ url Parts [ 1 ]} ? user =${ user Credentials [ 0 ]} & password =${ user Credentials [ 1 ]} & ssl mode = require " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ"$ jdbc Prefix $ url " ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ fun ĠH ikari DataSource . connect () Ġ= ĠDatabase . connect ( this ) Ċ