import Ġdatabases . Database Ċ import Ġdatabases . SQLite Ċ import Ġkotlinx . serialization . json . Json Ċ import Ġkotlinx . serialization . json . Json Builder Ċ import Ġstatements . create ĊĊ Ċ internal Ġval Ġdatabase : ĠDatabase ĊĠĠĠ Ġget () Ġ= ĠConfig . database Ġ?: Ġthrow ĠLogger Exception (" First Ġyou Ġneed Ġto Ġset Ġdatabase Ġproperty Ġin Ġconfig Ġmethod !") Ċ Ċ /** Ġ[ Json ] Ġinstance Ġwith Ġparameters Ġapplied Ġfrom Ġthe Ġconfig Ġmethod . Ġ*/ Ċ val Ġjson : ĠJson Ġby Ġlazy Ġ{ ĠJson ( builder Action Ġ= ĠConfig . json Format ) Ġ} Ċ Ċ /** ĠFunction Ġfor Ġsetting Ġconfiguration Ġvalues Ġand Ġgenerating Ġtables . Ġ*/ Ċ fun Ġconfig ( func : ĠConfig . () Ġ-> ĠUnit ): ĠUnit Ġ= ĠConfig . apply ( func ). run Ġ{ ĊĠĠĠ Ġval Ġload Refs Ġ= Ġalways Load References When Adding Entity ĊĠĠĠ Ġalways Load References When Adding Entity Ġ= Ġfalse ĊĠĠĠ Ġwith ( tables ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( refresh Tables ) ĠforEach ( Table <* >:: drop Table ) ĊĠĠĠĠĠĠĠ ĠforEach ( Table <* >:: init Table ) ĊĠĠĠĠĠĠĠ ĠforEach ( Table <* >:: create ) ĊĠĠĠĠĠĠĠ ĠforEach Ġ{ Ġit . default Entities . save () Ġ} ĊĠĠĠĠĠĠĠ ĠforEach Ġ{ Ġit . references Add Methods . forEach Ġ{ Ġit () Ġ} Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( database Ġis ĠSQLite ) Ġdatabase !!. execute Sql (" PR AG MA Ġforeign _ keys Ġ= ĠON ") ĊĠĠĠ Ġalways Load References When Adding Entity Ġ= Ġload Refs Ċ } Ċ Ċ /** ĠObject Ġcontaining Ġall Ġconfig Ġvalues Ġ*/ Ċ object ĠConfig Ġ{ ĊĠĠĠ Ġ/** ĠDatabase Ġinstance . Ġ*/ ĊĠĠĠ Ġvar Ġdatabase : ĠDatabase ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĠNumber Ġof Ġattempts Ġto Ġconnect Ġto Ġthe Ġdatabase . Ġ*/ ĊĠĠĠ Ġvar Ġconnection Attempts Amount : ĠInt Ġ= Ġ 3 ĊĊĠĠĠ Ġ/** ĠDelay Ġbetween Ġattempts Ġof Ġconnecting Ġto Ġthe Ġdatabase . Ġ*/ ĊĠĠĠ Ġvar Ġconnection Attempts Delay : ĠLong Ġ= Ġ 3 0 0 0 ĊĊĠĠĠ Ġ/** ĠCache Ġsize Ġfor Ġstoring Ġthe Ġlatest Ġreceived Ġentries . Ġ*/ ĊĠĠĠ Ġvar Ġmax Cache Size : ĠInt Ġ= Ġ 1 0 ĊĊĠĠĠ Ġ/** ĠDefault Ġnumber Ġof Ġentities Ġreceiving Ġper Ġrequest Ġwhen Ġcreating Ġsequence . Ġ*/ ĊĠĠĠ Ġvar Ġsequence Window Size : ĠInt Ġ= Ġ 1 0 ĊĊĠĠĠ Ġ/** ĠShould Ġthe Ġtables Ġbe Ġre created Ġwhen Ġthe Ġcode Ġis Ġrestarted Ġ*/ ĊĠĠĠ Ġvar Ġrefresh Tables : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġ/** ĠShould Ġreferences Ġbe Ġloaded Ġby Ġdefault . Ġ*/ ĊĠĠĠ Ġvar Ġload References ByDefault : ĠBoolean Ġ= Ġtrue ĊĊĠĠĠ Ġvar Ġalways Load References When Adding Entity : ĠBoolean Ġ= Ġtrue ĊĊĠĠĠ Ġ/** ĠConfig Ġvalues Ġfor Ġ[ Json Builder ]. Ġ*/ ĊĠĠĠ Ġvar Ġjson Format : ĠJson Builder . () Ġ-> ĠUnit Ġ= Ġ{ Ġ} ĊĊĠĠĠ Ġ/** ĠSpecifies Ġall Ġinstances Ġof Ġdatabase Ġtables . Ġ*/ ĊĠĠĠ Ġfun Ġset Tables ( var arg Ġtables : Ġ() Ġ-> ĠTable <* >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . tables Ġ= Ġ{ Ġtables . map Ġ{ Ġit () Ġ} Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġinternal Ġvar Ġtables : Ġ() Ġ-> ĠList < Table <* >> Ġ= Ġ{ ĠlistOf () Ġ} Ċ } Ċ