package Ġpw . for st . wire . backups . ios . database . config Ċ Ċ import Ġorg . jetbrains . ex posed . sql . Transaction Ċ import Ġorg . jetbrains . ex posed . sql . select Ċ import Ġpw . for st . wire . backups . ios . database . model . Conversation Members Ċ import Ġpw . for st . wire . backups . ios . database . model . Con versations Ċ import Ġpw . for st . wire . backups . ios . database . model . Generic Message Data Ċ import Ġpw . for st . wire . backups . ios . database . model . Messages Ċ import Ġpw . for st . wire . backups . ios . database . model . Primary Keys Ċ import Ġpw . for st . wire . backups . ios . database . model . Re actions Ċ import Ġpw . for st . wire . backups . ios . database . model . System Messages Related Users Ċ import Ġpw . for st . wire . backups . ios . database . model . Users Ċ import Ġpw . for st . wire . backups . ios . database . model . Users Re actions Ċ import Ġpw . for st . wire . backups . utils . primary Constructor Parameters Ċ import Ġkotlin . reflect . full . primary Constructor Ċ Ċ internal Ġclass ĠI os Database ( ĊĠĠĠ Ġinternal Ġval Ġentity Type P ks : ĠDatabase Tables Configuration Ċ ) Ġ{ ĊĠĠĠ Ġinternal Ġval Ġconversation Members Ġby Ġlazy Ġ{ ĠCon versation Members Ġ} ĊĠĠĠ Ġinternal Ġval Ġconversations Ġby Ġlazy Ġ{ ĠCon versations Ġ} ĊĠĠĠ Ġinternal Ġval Ġgeneric Message Data Ġby Ġlazy Ġ{ ĠGeneric Message Data Ġ} ĊĠĠĠ Ġinternal Ġval Ġmessages Ġby Ġlazy Ġ{ ĠMessages Ġ} ĊĠĠĠ Ġinternal Ġval Ġprimary Keys Ġby Ġlazy Ġ{ ĠPrimary Keys Ġ} ĊĠĠĠ Ġinternal Ġval Ġre actions Ġby Ġlazy Ġ{ ĠRe actions Ġ} ĊĠĠĠ Ġinternal Ġval Ġusers Ġby Ġlazy Ġ{ ĠUsers Ġ} ĊĊĠĠĠ Ġinternal Ġval Ġsystem Messages Related Users Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠSystem Messages Related Users ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser EntityType Pk Ġ= Ġentity Type P ks . user EntityType Pk , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsystem Message EntityType Pk Ġ= Ġentity Type P ks . system Message EntityType Pk ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġval Ġusers Re actions Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠUsers Re actions ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser EntityType Pk Ġ= Ġentity Type P ks . user EntityType Pk , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreaction EntityType Pk Ġ= Ġentity Type P ks . reaction EntityType Pk ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Suppress (" unused ") Ġ// Ġwe Ġneed Ġto Ġforce Ġit Ġto Ġrun Ġinside Ġtransaction Ċ internal Ġfun ĠTransaction . obtain Database Tables Configuration (): ĠDatabase Tables Configuration Ġ{ ĊĠĠĠ Ġval Ġentity Name To Pk Ġ= ĠPrimary Keys . select Ġ{ ĊĠĠĠĠĠĠĠ ĠPrimary Keys . name . in List ( parameter Name To Entity Name . values ) ĊĠĠĠ Ġ}. associate Ġ{ Ġit [ Primary Keys . name ] Ġto Ġit [ Primary Keys . entity Key ] Ġ} ĊĊĠĠĠ Ġ// Ġwe Ġcan Ġassert Ġhere Ġas Ġthis Ġis Ġdat aclass ĊĠĠĠ Ġreturn Ġprimary Constructor Parameters < Database Tables Configuration >() !! ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġ( parameter Name , Ġk Parameter ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġentity Name Ġ= Ġparameter Name To Entity Name . getValue ( parameter Name !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġentity Type PrimaryKey Ġ= Ġentity Name To Pk . getValue ( entityName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk Parameter Ġto Ġentity Type PrimaryKey ĊĠĠĠĠĠĠĠ Ġ}. toMap () ĊĠĠĠĠĠĠĠ Ġ. let Ġ{ ĠDatabase Tables Configuration :: class . primary Constructor !!. call By ( it ) Ġ} Ċ } Ċ Ċ private Ġval Ġparameter Name To Entity Name Ġ= Ġmap Of ( ĊĠĠĠ ĠDatabase Tables Configuration :: system Message EntityType Pk . name Ġto Ġ" System Message ", ĊĠĠĠ ĠDatabase Tables Configuration :: reaction EntityType Pk . name Ġto Ġ" Reaction ", ĊĠĠĠ ĠDatabase Tables Configuration :: user EntityType Pk . name Ġto Ġ" User " Ċ ) Ċ