package Ġno . nav . p am . xml st illing . legacy Ċ Ċ import Ġcom . zaxxer . hikari . HikariConfig Ċ import Ġmu . Kotlin Logging Ċ import Ġno . nav . vault . jdbc . h ik ar ic p . Hikari CP Vault Util Ċ import Ġjavax . sql . DataSource Ċ Ċ object ĠDat as ource Provider Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlog Ġ= ĠKotlin Logging . logger Ġ{ Ġ} ĊĊĠĠĠ Ġ@ Volatile Ġprivate Ġvar ĠdataSource : ĠDataSource ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġget (): ĠDataSource Ġ= ĠdataSource !! ĊĊĠĠĠ Ġfun Ġinit ( dataSource : ĠDataSource ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . dataSource Ġ?: Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . dataSource Ġ= Ġthis . dataSource Ġ?: ĠdataSource ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinit Postgres DataSource ( jdbc Url : ĠString , Ġmount Path : ĠString , Ġdb Name : ĠString ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit ( nav Postgres DataSource ( jdbc Url , Ġmount Path , Ġdb Name )) ĊĊĠĠĠ Ġprivate Ġfun Ġnav Postgres DataSource ( jdbc Url : ĠString , Ġmount Path : ĠString , Ġdb Name : ĠString ): ĠDataSource Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . debug (" Initializing Ġdatabase Ġconnection Ġpool ") ĊĊĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= ĠH ikariConfig () ĊĠĠĠĠĠĠĠ Ġconfig . jdbc Url Ġ= Ġjdbc Url ĊĠĠĠĠĠĠĠ Ġconfig . maximum PoolSize Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġconfig . minimum Idle Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġreturn ĠH ikari CP Vault Util . create Hikari DataSource With Vault Integration ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmount Path , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ("% s - readonly ", Ġdb Name )) !! ĊĠĠĠ Ġ} Ċ Ċ } ĊĊ