package Ġnet . d ank r ush en . td h bot . database Ċ Ċ import Ġjet brains . ex od us . database . Transient Entity Store Ċ import Ġkotlinx . dn q . Xd Model Ċ import Ġkotlinx . dn q . query .* Ċ import Ġkotlinx . dn q . store . container . Thread Local Store Container Ċ import Ġkotlinx . dn q . store . container . create Transient Entity Store Ċ import Ġkotlinx . dn q . util . init MetaData Ċ import Ġnet . d ank r ush en . td h bot . database . user . Xd User Ċ import Ġjava . nio . file . Path Ċ Ċ class ĠT DH Database Ġ{ ĊĊĠĠĠ Ġval Ġx od us Store : ĠTrans ient Entity Store ĊĊĠĠĠ Ġconstructor ( database : ĠPath , Ġenvironment Name : ĠString Ġ= Ġ" db ") Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠRegister Ġpersistent Ġclasses ĊĠĠĠĠĠĠĠ ĠX d Model . register Nodes ( Xd User ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠInitialize ĠX od us Ġpersistent Ġstorage ĊĠĠĠĠĠĠĠ Ġx od us Store Ġ= Ġcreate Transient Entity Store ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb Folder Ġ= Ġdatabase . to File (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenvironment Name Ġ= Ġenvironment Name ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠInitialize ĠX od us - DN Q Ġmetadata ĊĠĠĠĠĠĠĠ Ġinit MetaData ( Xd Model . hierarchy , Ġx od us Store ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetUser Discord Or Steam ( discord Id : ĠString ? Ġ= Ġnull , Ġsteam Id : ĠString ? Ġ= Ġnull ): ĠX d User ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠThread Local Store Container . with Store ( x od us Store ) Ġ{ ĠX d User . query (( Xd User :: discord Id Ġeq Ġdiscord Id ) Ġor Ġ( Xd User :: steam Id Ġeq Ġsteam Id )). first OrNull () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcontains User Discord Or Steam ( discord Id : ĠString ? Ġ= Ġnull , Ġsteam Id : ĠString ? Ġ= Ġnull ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠThread Local Store Container . with Store ( x od us Store ) Ġ{ ĠX d User . query (( Xd User :: discord Id Ġeq Ġdiscord Id ) Ġor Ġ( Xd User :: steam Id Ġeq Ġsteam Id )). any () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmake User ( discord Id : ĠString , Ġsteam Id : ĠString ): ĠX d User Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠThread Local Store Container . with Store ( x od us Store ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( contains User Discord Or Steam ( discord Id , Ġsteam Id )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Duplicate Ġuser , ĠDiscord ĠID Ġor ĠSteam ĠID Ġalready Ġexist Ġwithin Ġthe Ġdatabase ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠX d User . new Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . discord Id Ġ= Ġdiscord Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . steam Id Ġ= Ġsteam Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmake User Or IfExists Return Null ( discord Id : ĠString , Ġsteam Id : ĠString ): ĠX d User ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠThread Local Store Container . with Store ( x od us Store ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġuser : ĠX d User ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! contains User Discord Or Steam ( discord Id , Ġsteam Id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Ġ= ĠX d User . new Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . discord Id Ġ= Ġdiscord Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . steam Id Ġ= Ġsteam Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }