package Ġio . github . raf ael j pc . tutorial . ktor . services Ċ Ċ import Ġcom . types afe . config . Config Ċ import Ġcom . types afe . config . Config Factory Ċ import Ġcom . zaxxer . hikari . HikariConfig Ċ import Ġcom . zaxxer . hikari . Hikari DataSource Ċ import Ġio . github . raf ael j pc . tutorial . ktor . services . repository . Customer Repository Ċ import Ġio . github . raf ael j pc . tutorial . ktor . services . service . Customer Service Ċ import Ġio . github . raf ael j pc . tutorial . ktor . services . service . Customer ServiceImpl Ċ import Ġorg . jetbrains . ex posed . sql . Database Ċ import Ġorg . k oin . dsl . module Ċ import Ġjava . util .* Ċ import Ġjavax . sql . DataSource Ċ Ċ val Ġcustomer App Module Ġ= Ġmodule ( createdAt Start Ġ= Ġtrue ) Ġ{ ĊĠĠĠ Ġsingle < Config > Ġ{ ĊĠĠĠĠĠĠĠ ĠConfig Factory . load () ĊĠĠĠ Ġ} ĊĠĠĠ Ġsingle Ġ{ ĠCustomer ServiceImpl () Ġas ĠCustomer Service Ġ} ĊĠĠĠ Ġsingle Ġ{ ĠCustomer Repository ( get () Ġas ĠDatabase ) Ġ} ĊĠĠĠ Ġsingle < DataSource > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= Ġget () Ġas ĠConfig ĊĠĠĠĠĠĠĠ Ġval Ġprofile Ġ= Ġconfig . getString (" profile ") ĊĠĠĠĠĠĠĠ Ġval Ġdb Config Ġ= ĠH ikariConfig ( config . getConfig ("$ profile . dataSource "). to Properties ()) ĊĠĠĠĠĠĠĠ ĠH ikari DataSource ( db Config ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġfactory () Ġ{ ĊĠĠĠĠĠĠĠ ĠDatabase . connect ( get () Ġas ĠDataSource ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠConfig . to Properties () Ġ= ĠProperties (). also Ġ{ ĊĠĠĠ Ġthis . entrySet (). forEach Ġ{ Ġe Ġ-> Ġit . setProperty ( e . key , Ġthis . getString ( e . key )) Ġ} Ċ }