package Ġtech . gd rag on . db . dao Ċ Ċ import Ġorg . jetbrains . ex posed . dao .* Ċ import Ġorg . jetbrains . ex posed . sql . and Ċ import Ġorg . jetbrains . ex posed . sql . ex posed Logger Ċ import Ġorg . jetbrains . ex posed . sql . transactions . Transaction Manager Ċ import Ġorg . jetbrains . ex posed . sql . transactions . transaction Ċ import Ġtech . gd rag on . db . table . Tables . Aliases Ċ import Ġtech . gd rag on . db . table . Tables . Channels Ċ import Ġtech . gd rag on . db . table . Tables . Guild s Ċ import Ġtech . gd rag on . db . table . Tables . Record ings Ċ import Ġtech . gd rag on . db . table . Tables . Users Ċ import Ġtech . gd rag on . db . table . Tables . Settings Ġas ĠSettings Table Ċ Ċ class ĠAlias ( id : ĠEntity ID < Int >) Ġ: ĠInt Entity ( id ) Ġ{ ĊĠ Ġcompanion Ġobject Ġ: ĠInt Entity Class < Alias >( Aliases ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġaliases Ġ= ĠlistOf (" info " Ġto Ġ" help ", Ġ" record " Ġto Ġ" join ", Ġ" stop " Ġto Ġ" leave ", Ġ" symbol " Ġto Ġ" prefix ") ĊĊĠĠĠ Ġfun Ġcreate Default Aliases ( settings : ĠSettings ) Ġ= Ġaliases . forEach Ġ{ Ġ( alias , Ġname ) Ġ-> ĊĠĠĠĠĠ ĠAlias . new Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . name Ġ= Ġname ĊĠĠĠĠĠĠĠ Ġthis . alias Ġ= Ġalias ĊĠĠĠĠĠĠĠ Ġthis . settings Ġ= Ġsettings ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġvar Ġname Ġby ĠAli ases . name ĊĠ Ġvar Ġalias Ġby ĠAli ases . alias ĊĠ Ġvar Ġsettings Ġby ĠSettings Ġreferenced On ĠAli ases . settings Ċ } Ċ Ċ class ĠChannel ( id : ĠEntity ID < Long >) Ġ: ĠLong Entity ( id ) Ġ{ ĊĠ Ġcompanion Ġobject Ġ: ĠLong Entity Class < Channel >( Channels ) Ġ{ ĊĠĠĠ Ġfun Ġfind OrCreate ( id : ĠLong , Ġname : ĠString , Ġguild Id : ĠLong , Ġguild Name : ĠString ): ĠChannel Ġ{ ĊĠĠĠĠĠ Ġval Ġguild Ġ= ĠGuild . find OrCreate ( guild Id , Ġguild Name ) ĊĊĠĠĠĠĠ Ġreturn Ġfind Ġ{ Ġ( Channels . settings Ġeq Ġguild . settings . id ) Ġand Ġ( Channels . id Ġeq Ġid ) Ġ}. first OrNull () Ġ?: ĠChannel . new ( id ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . name Ġ= Ġname ĊĠĠĠĠĠĠĠ Ġthis . settings Ġ= Ġguild . settings ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġvar Ġname Ġby ĠChannels . name ĊĠ Ġvar Ġauto Join Ġby ĠChannels . auto Join ĊĠ Ġ@ Deprecated (" This Ġfeature Ġis Ġbroken ", Ġlevel Ġ= ĠDeprec ation Level . ERROR ) ĊĠ Ġvar Ġauto Leave Ġby ĠChannels . auto Leave ĊĠ Ġvar Ġsettings Ġby ĠSettings Ġreferenced On ĠChannels . settings Ċ } Ċ Ċ class ĠGuild ( id : ĠEntity ID < Long >) Ġ: ĠLong Entity ( id ) Ġ{ ĊĠ Ġcompanion Ġobject Ġ: ĠLong Entity Class < Guild >( Guild s ) Ġ{ ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġfind OrCreate ( id : ĠLong , Ġname : ĠString ): ĠGuild Ġ{ ĊĠĠĠĠĠ Ġreturn ĠGuild . findById ( id ) Ġ?: ĠGuild . new ( id ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . name Ġ= Ġname ĊĠĠĠĠĠ Ġ}. also Ġ{ Ġguild Ġ-> ĊĠĠĠĠĠĠĠ Ġ// ĠPlease Ġensure ĠGuild Ġis Ġcreated Ġbefore Ġproceed ing ĊĠĠĠĠĠĠĠ Ġexposed Logger . info (" Creating ĠGuild Ġdatabase Ġentry Ġfor : Ġ${ guild . name }") ĊĠĠĠĠĠĠĠ ĠTransaction Manager . current (). commit () ĊĊĠĠĠĠĠĠĠ ĠAlias . create Default Aliases ( Settings . new Ġ{ Ġthis . guild Ġ= Ġguild Ġ}) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġvar Ġname Ġby ĠGuild s . name ĊĠ Ġval Ġsettings Ġby ĠSettings Ġback Referenced On ĠSettings Table . guild Ċ } Ċ Ċ class ĠRecord ing ( id : ĠEntity ID < Long >) Ġ: ĠLong Entity ( id ) Ġ{ ĊĠ Ġcompanion Ġobject Ġ: ĠLong Entity Class < Recording >( Record ings ) ĊĊĠ Ġval Ġcreated On Ġby ĠRecord ings . created On ĊĊĠ Ġvar Ġchannel Ġby ĠChannel Ġreferenced On ĠRecord ings . channel ĊĠ Ġvar Ġsize Ġby ĠRecord ings . size ĊĠ Ġvar Ġmodified On Ġby ĠRecord ings . modified On ĊĠ Ġvar Ġurl Ġby ĠRecord ings . url ĊĠ Ġvar Ġguild Ġby ĠGuild Ġreferenced On ĠRecord ings . guild Ċ } Ċ Ċ class ĠSettings ( id : ĠEntity ID < Long >) Ġ: ĠLong Entity ( id ) Ġ{ ĊĠ Ġcompanion Ġobject Ġ: ĠLong Entity Class < Settings >( Settings Table ) ĊĊĠ Ġvar Ġauto Save Ġby ĠSettings Table . auto Save ĊĠ Ġvar Ġdefault Text Channel Ġby ĠSettings Table . default Text Channel ĊĠ Ġvar Ġprefix Ġby ĠSettings Table . prefix ĊĠ Ġvar Ġvolume Ġby ĠSettings Table . volume ĊĠ Ġvar Ġguild Ġby ĠGuild Ġreferenced On ĠSettings Table . guild ĊĊĠ Ġval Ġalert Black list Ġby ĠUser Ġref err ers On ĠUsers . settings ĊĠ Ġval Ġchannels Ġby ĠChannel Ġref err ers On ĠChannels . settings ĊĠ Ġval Ġaliases Ġby ĠAlias Ġref err ers On ĠAli ases . settings Ċ } Ċ Ċ class ĠUser ( id : ĠEntity ID < Long >) Ġ: ĠLong Entity ( id ) Ġ{ ĊĠ Ġcompanion Ġobject Ġ: ĠLong Entity Class < User >( Users ) Ġ{ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġfind OrCreate ( id : ĠString , Ġsettings : ĠSettings ): ĠUser Ġ= Ġtransaction Ġ{ ĊĠĠĠĠĠ Ġval Ġusers Ġ= ĠUser . find Ġ{ ĊĠĠĠĠĠĠĠ Ġ( Users . name Ġeq Ġid ) Ġand Ġ( Users . settings Ġeq Ġsettings . id ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġif Ġ( users . empty ()) Ġ{ ĊĠĠĠĠĠĠĠ ĠUser . new Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġthis . name Ġ= Ġid ĊĠĠĠĠĠĠĠĠĠ Ġthis . settings Ġ= Ġsettings ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġusers . first () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġvar Ġname Ġby ĠUsers . name ĊĠ Ġvar Ġsettings Ġby ĠSettings Ġreferenced On ĠUsers . settings Ċ } Ċ