package Ġno . nav . hel se . sp enn . e 2 e Ċ Ċ import Ġcom . zaxxer . hikari . HikariConfig Ċ import Ġcom . zaxxer . hikari . Hikari DataSource Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġk ot li query . query Of Ċ import Ġk ot li query . session Of Ċ import Ġk ot li query . using Ċ import Ġno . nav . hel se . sp enn . Database Ċ import Ġno . nav . hel se . sp enn . ut bet aling . Opp drag Dao . Companion . to Opp drag Dto Ċ import Ġorg . fly way db . core . Fly way Ċ import Ġorg . test containers . containers . PostgreSQL Container Ċ Ċ class ĠTest Database Ġ: ĠDatabase Ġ{ ĊĠĠĠ Ġprivate Ġval ĠdataSource Ġ= Ġrun Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpostgres Ġ= ĠPostgreSQL Container < Nothing >(" postgres : 1 3 "). also Ġ{ Ġit . start () Ġ} ĊĠĠĠĠĠĠĠ Ġval ĠhikariConfig Ġ= ĠH ikariConfig (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjdbc Url Ġ= Ġpostgres . jdbc Url ĊĠĠĠĠĠĠĠĠĠĠĠ Ġusername Ġ= Ġpostgres . username ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Ġ= Ġpostgres . password ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmaximum PoolSize Ġ= Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġminimum Idle Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġidle Timeout Ġ= Ġ 1 0 0 0 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconnection Timeout Ġ= Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax Lifetime Ġ= Ġ 3 0 0 0 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠH ikari DataSource ( h ikariConfig ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget DataSource () Ġ= ĠdataSource ĊĊĠĠĠ Ġoverride Ġfun Ġmigrate () Ġ{ ĊĠĠĠĠĠĠĠ ĠFly way ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. configure () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. dataSource ( dataSource ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. load (). also ( Fly way :: migrate ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreset Database () Ġ{ ĊĠĠĠĠĠĠĠ Ġsession Of ( dataSource ). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . run ( query Of (" TRUNC ATE Ġav stem ming ĠCASCADE "). as Execute ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . run ( query Of (" TRUNC ATE Ġopp drag ĠCASCADE "). as Execute ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġh ent Alle Opp drag () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġusing ( session Of ( dataSource )) Ġ{ Ġsession Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquery Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" SELECT Ġ* ĠFROM Ġopp drag " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession . run ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery Of ( query ). map Ġ{ Ġit . to Opp drag Dto () Ġ}. asList ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }