/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠAlex i ĠBre Ċ Ġ* Ċ Ġ* Ġ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 Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttps :// 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 Ġtech . alex ib . y aba . server . config Ċ Ċ import Ġio . r 2 dbc . postgresql . Postgres ql Connection Configuration Ċ import Ġio . r 2 dbc . postgresql . Postgres ql ConnectionFactory Ċ import Ġmu . Kotlin Logging Ċ import Ġorg . fly way db . core . Fly way Ċ import Ġorg . fly way db . core . api . configuration . Fluent Configuration Ċ import Ġorg . springframework . context . annotation . Bean Ċ import Ġorg . springframework . context . annotation . Configuration Ċ import Ġorg . springframework . context . annotation . Primary Ċ import Ġorg . test containers . containers . PostgreSQL Container Ċ import Ġorg . test containers . containers . wait . strategy . Wait Ċ Ċ private Ġval Ġlogger Ġ= ĠKotlin Logging . logger Ġ{ Ġ} Ċ Ċ @ Configuration Ċ class ĠIntegration Test Configuration Ġ{ ĊĊĠĠĠ Ġ@ Bean ( init Method Ġ= Ġ" start ", Ġdestroy Method Ġ= Ġ" stop ") ĊĠĠĠ Ġfun Ġpostgresql Container (): ĠPostgreSQL Container < Nothing > Ġ= ĠPostgreSQL Container < Nothing >(" postgres : 1 3 - alpine "). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġwith Username ( USERNAME ) ĊĠĠĠĠĠĠĠ Ġwith Password ( PASSWORD ) ĊĠĠĠĠĠĠĠ Ġwith Database Name ( DB _ NAME ) ĊĠĠĠĠĠĠĠ Ġwith Url Param (" TC _ IMAGE _ TAG ", Ġ" 1 3 . 1 ") Ċ // ĠĠĠĠĠĠĠ Ġwith Classpath Resource Mapping (" db / init . sql ", Ġ"/ docker - entrypoint - init db . d / init . sql ", ĠBind Mode . READ _ ONLY ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Bean ĊĠĠĠ Ġ@ Primary ĊĠĠĠ Ġfun Ġconnection Factory ( pg Container : ĠPostgreSQL Container < Nothing >) Ġ= ĠPostgres ql ConnectionFactory ( ĊĠĠĠĠĠĠĠ ĠPostgres ql Connection Configuration . builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. host (" 1 2 7 . 0 . 0 . 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. port ( pg Container . get Mapped Port ( 5 4 3 2 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. database ( pg Container . database Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. username ( pg Container . username ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. password ( pg Container . password ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ). also Ġ{ Ġfly way ( pg Container ) Ġ} ĊĊĠĠĠ Ġfun Ġfly way ( pg Container : ĠPostgreSQL Container < Nothing >) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( pg Container ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwaiting For ( Wait . for Health check ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġ" jdbc : postgresql ://${ pg Container . host }:${ pg Container . first Mapped Port }/ y aba " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFluent Configuration (). dataSource ( url , Ġ" y aba ", Ġ" y aba ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. locations (" classpath :/ db / migration ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĠFly way ( this ). migrate () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDB _ NAME Ġ= Ġ" y aba " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠUSER NAME Ġ= Ġ" y aba " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠPASSWORD Ġ= Ġ" y aba " ĊĠĠĠ Ġ} Ċ } Ċ