package Ġnet . ny hm . kat ap ult Ċ Ċ import Ġorg . jetbrains . ex posed . sql . Database Ċ import Ġorg . jetbrains . ex posed . sql . Schema Utils Ċ import Ġorg . jetbrains . ex posed . sql . Table Ċ import Ġorg . jetbrains . ex posed . sql . transactions . Transaction Manager Ċ import Ġorg . jetbrains . ex posed . sql . transactions . transaction Ċ import Ġjava . io . File Ċ import Ġjava . sql . Connection Ċ Ċ /** Ċ Ġ* ĠEx posed Ġdatabase Ġdao Ġclasses Ġshould Ġdepend Ġon Ġ[ Ex posed Db ] Ġto Ġensure Ġdatabase Ġhas Ġbeen Ġinitialized . Ċ Ġ*/ Ċ class ĠEx posed Db ( driver : ĠDb Driver ) Ġ{ ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġdriver . init () ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠEx posed Ġdatabase Ġdao Ġclasses Ġshould Ġcall Ġthis Ġmethod Ġto Ġinitialize Ġtables . ĊĠĠ Ġ*/ ĊĠ Ġfun Ġinit ( table : ĠTable ) Ġ= Ġtransaction Ġ{ ĊĠĠĠ ĠSchema Utils . create ( table ) ĊĠĠĠ Ġ// Schema Utils . create Missing Tables And Columns ( table ) ĊĠĠĠ Ġ// ĠTODO : ĠCli Ġflag Ġwhether Ġto Ġdo Ġthis Ġor Ġnot , Ġas Ġwell Ġas ĊĠĠĠ Ġ// Ġ Ġseparate Ġcli Ġcommand Ġto Ġinitialize Ġtables Ġand Ġexit ĊĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠBind Ġa Ġconcrete Ġ[ Db Driver ] Ġclass Ġto Ġthe Ġinjection Ġframework Ġfor Ġ[ Ex posed Db ] Ġto Ġinitialize . Ċ Ġ*/ Ċ interface ĠDb Driver Ġ{ ĊĠ Ġfun Ġinit () Ċ } Ċ Ċ /** Ċ Ġ* ĠMarker Ġinterface Ġfor Ġdb Ġconfig Ċ Ġ*/ Ċ interface ĠDb Config Ċ Ċ data Ġclass ĠSql ite Config ( ĊĠ Ġval Ġdb File : ĠFile Ċ ): ĠDb Config Ċ Ċ /** Ċ Ġ* ĠInitializes Ġa ĠSQLite Ġdb Ġfor ĠEx posed ĠORM / DAO . Ċ Ġ* ĠEx posed Ġuses Ġa Ġsingle Ġglobal Ġconfiguration . Ċ Ġ* ĠModules Ġthat Ġutilize ĠEx posed - based Ġdata Ġclasses Ġhave Ġan Ġinvisible Ġdependency Ġon Ġthis Ġmodule . Ċ Ġ*/ Ċ class ĠSql ite Driver ( private Ġval Ġconfig : ĠSql ite Config ): ĠDb Driver Ġ{ ĊĠ Ġoverride Ġfun Ġinit () Ġ{ ĊĠĠĠ Ġval Ġurl Ġ= Ġ" jdbc : sqlite :${ config . db File }" ĊĠĠĠ ĠDatabase . connect ( url , Ġ" org . sqlite . JDBC ") ĊĠĠĠ ĠTransaction Manager . manager . default Isolation Level Ġ= ĠConnection . TRANSACTION _ SERIAL IZ ABLE ĊĠĠĠ Ġ// Ġsqlite Ġrequires Ġserial izable Ġisolation Ġlevel ĊĠĠĠ Ġ// Ġhttps :// github . com / Jet Brains / Ex posed / wiki / FAQ ĊĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠPostgres Config ( ĊĠ Ġval Ġhost : ĠString , ĊĠ Ġval Ġdb : ĠString , ĊĠ Ġval Ġuser : ĠString Ġ= Ġ" postgres ", ĊĠ Ġval Ġpass : ĠString Ġ= Ġ"" Ċ ): ĠDb Config Ċ Ċ class ĠPostgres Driver ( private Ġval Ġconfig : ĠPostgres Config ): ĠDb Driver Ġ{ ĊĠ Ġoverride Ġfun Ġinit () Ġ{ ĊĠĠĠ Ġval Ġurl Ġ= Ġ" jdbc : postgresql ://${ config . host }/${ config . db }" ĊĠĠĠ ĠDatabase . connect ( url , Ġ" org . postgresql . Driver ", Ġconfig . user , Ġconfig . pass ) ĊĠ Ġ} Ċ }