/* Ċ Ġ* ĠCopyright Ġ( C ) 2 0 1 8 Ġ- ĠDen y ĠPr ase ty o Ġ< jas o et 8 7 @ gmail . com > Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġid . y of rame work . e bean . module Ċ Ċ import Ġarrow . core . getOrElse Ċ import Ġdagger . Module Ċ import Ġdagger . Provides Ċ import Ġid . y of rame work . core . json . get Try Ċ import Ġid . y of rame work . core . module . Core Module Ċ import Ġid . y of rame work . db . create HikariPool DataSource Ċ import Ġio . e bean . Database Ċ import Ġio . e bean . Database Factory Ċ import Ġio . e bean . config . Database Config Ċ import Ġio . vertx . core . json . JsonObject Ċ import Ġjavax . inject . Named Ċ import Ġjavax . inject . Singleton Ċ import Ġjavax . sql . DataSource Ċ Ċ @ Module ( includes Ġ= Ġ[ Core Module :: class ]) Ċ class ĠE Bean Module Ġ{ ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Named (" database User ") ĊĠĠĠ Ġfun Ġusername ( config : ĠJsonObject ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġ" DATABASE _ USER " ĊĠĠĠĠĠĠĠ Ġreturn Ġconfig . get Try < String >( key ). getOrElse Ġ{ Ġthrow Ġit Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Named (" database Password ") ĊĠĠĠ Ġfun Ġpassword ( config : ĠJsonObject ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġ" DATABASE _ PASSWORD " ĊĠĠĠĠĠĠĠ Ġreturn Ġconfig . get Try < String >( key ). getOrElse Ġ{ Ġthrow Ġit Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Named (" database Url ") ĊĠĠĠ Ġfun Ġurl ( config : ĠJsonObject ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġ" DATABASE _ URL " ĊĠĠĠĠĠĠĠ Ġreturn Ġconfig . get Try < String >( key ). getOrElse Ġ{ Ġthrow Ġit Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Named (" database Driver ") ĊĠĠĠ Ġfun Ġdriver ( config : ĠJsonObject ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġ" DATABASE _ DRIVER _ CLASS NAME " ĊĠĠĠĠĠĠĠ Ġreturn Ġconfig . get Try < String >( key ). getOrElse Ġ{ Ġthrow Ġit Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun ĠdataSource ( ĊĠĠĠĠĠĠĠ Ġ@ Named (" database User ") Ġuser : ĠString , ĊĠĠĠĠĠĠĠ Ġ@ Named (" database Password ") Ġpassword : ĠString , ĊĠĠĠĠĠĠĠ Ġ@ Named (" database Url ") Ġurl : ĠString , ĊĠĠĠĠĠĠĠ Ġ@ Named (" database Driver ") Ġdriver : ĠString ĊĠĠĠ Ġ): ĠDataSource Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate HikariPool DataSource ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" HikariPool ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġurl , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġusername Ġ= Ġuser , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Ġ= Ġpassword , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdriver Ġ= Ġdriver ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġe bean Server ( dataSource : ĠDataSource ): ĠDatabase Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= ĠDatabase Config (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" ebe ands " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset DataSource ( dataSource ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠDatabase Factory . create ( config ) ĊĠĠĠ Ġ} Ċ } Ċ