package Ġde . ax el r ind le . simple coins Ċ Ċ import Ġcom . mysql . cj . jdbc . Mysql DataSource Ċ import Ġde . ax el r ind le . po cket knife . P ocket Config Ċ import Ġde . ax el r ind le . simple coins . manage . FileManager Ċ import Ġde . ax el r ind le . simple coins . manage . I Manager Ċ import Ġde . ax el r ind le . simple coins . manage . SQL Manager Ċ import Ġio . re query .* Ċ import Ġio . re query . sql . Kotlin Configuration Ċ import Ġio . re query . sql . Kotlin Entity DataStore Ċ import Ġio . re query . sql . Schema Modifier Ċ import Ġio . re query . sql . Table Creation Mode Ċ import Ġjava . io . Closeable Ċ import Ġjavax . sql . DataSource Ċ Ċ /** Ċ Ġ* ĠRepresents Ġa Ġplayer 's Ġbalance Ġin Ġthe Ġdatabase . Ċ Ġ*/ Ċ @ Entity Ċ @ Table ( name Ġ= Ġ" Simple Coins ") Ċ interface ĠCoin User Ġ: ĠPers ist able Ġ{ ĊĠĠĠ Ġ@ get : Key ĊĠĠĠ Ġ@ get : Column ( unique Ġ= Ġtrue , Ġcol late Ġ= Ġ" utf 8 _ general _ ci ") ĊĠĠĠ Ġvar Ġuuid : ĠString ĊĊĠĠĠ Ġ@ get : Column ( collate Ġ= Ġ" utf 8 _ general _ ci ") ĊĠĠĠ Ġvar Ġamount : ĠDouble Ċ } Ċ Ċ /** Ċ Ġ* ĠThe Ġ** Coin Manager ** Ġis Ġused Ġto Ġretrieve Ġand Ġmodify Ġthe Ġcoin Ġbalances Ġfor Ġa Ġgiven Ġplayer . Ċ Ġ*/ Ċ object ĠCoin Manager Ġ: ĠClose able Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġp ocket Config : ĠP ocket Config ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġshould Use Sql Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġmanager : ĠI Manager ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġdb Config : ĠKotlin Configuration ? Ġ= Ġnull ĊĠĠĠ Ġinternal Ġvar Ġdb Store : ĠKotlin Entity DataStore < Coin User >? Ġ= Ġnull ĊĠĠĠ Ġinternal Ġvar ĠdataSource : ĠDataSource ? Ġ= Ġnull ĊĊĠĠĠ Ġinternal Ġfun Ġinit ( po cket Config : ĠP ocket Config ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . po cket Config Ġ= Ġp ocket Config ĊĠĠĠĠĠĠĠ Ġshould Use Sql Ġ= Ġp ocket Config . access (" config ") !!. getBoolean (" Database . Use SQL ") ĊĊĠĠĠĠĠĠĠ Ġif Ġ( should Use Sql ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġestablish Database Connection () ĊĠĠĠĠĠĠĠ Ġelse Ġ// Ġuse Ġthe Ġfile Ġdatabase ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanager Ġ= ĠFile Manager ( po cket Config , Ġ" database ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclose () Ġ{ ĊĠĠĠĠĠĠĠ Ġdb Store ?. close () ĊĊĠĠĠĠĠĠĠ ĠdataSource Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġdb Config Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġdb Store Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġmanager Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġestablish Database Connection () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġconfiguration Ġvalues ĊĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= Ġp ocket Config !!. access (" config ") !!. getConfiguration Section (" Database ") !! ĊĠĠĠĠĠĠĠ Ġval Ġhost Ġ= Ġconfig . getString (" Host ") ĊĠĠĠĠĠĠĠ Ġval Ġport Ġ= Ġconfig . getString (" Port ") ĊĠĠĠĠĠĠĠ Ġval Ġdb Name Ġ= Ġconfig . getString (" Database Name ") ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġconfig . getString (" Username ") ĊĠĠĠĠĠĠĠ Ġval Ġpass Ġ= Ġconfig . getString (" Password ") ĊĊĠĠĠĠĠĠĠ Ġ// Ġestablish Ġconnection ĊĠĠĠĠĠĠĠ ĠdataSource Ġ= ĠM ysql DataSource (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Url (" jdbc : mysql :// $ host :$ port /$ dbName ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetUser ( user ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Password ( pass ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġserver Timezone Ġ= Ġ" UTC " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdb Config Ġ= ĠKotlin Configuration ( dataSource Ġ= ĠdataSource !! , Ġmodel Ġ= ĠModels . DEFAULT ) ĊĠĠĠĠĠĠĠ Ġdb Store Ġ= ĠKotlin Entity DataStore ( db Config !! ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġcreate Ġtable ( s ) ĊĠĠĠĠĠĠĠ ĠSchema Modifier ( dataSource !! , ĠModels . DEFAULT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create Tables ( Table Creation Mode . CREATE _ NOT _ EXISTS ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġinstantiate Ġan ĠSQL Manager ĊĠĠĠĠĠĠĠ Ġmanager Ġ= ĠSQL Manager () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// Ġ# Ġ# Ġ# Ġ# Ġ# Ġ# Ġ# Ġ# Ġ# Ġ# Ġ# Ġ# Ġ# Ġ# Ġ# Ġ# Ġ# Ġ# Ġ# ĊĠĠĠ Ġ// ĠPublic ĠSection ĊĠĠĠ Ġ// ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġconfigured Ġname Ġof Ġthe Ġcurrency . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠgetCurrent Name (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġp ocket Config !!. access (" config ") !!. getString (" Coins Name ") !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ see ĠI Manager . add Player ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd Player ( uuid : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmanager !!. add Player ( uuid ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ see ĠI Manager . has Player ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġhas Player ( uuid : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmanager !!. has Player ( uuid ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ see ĠI Manager . getC oin s ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Coins ( uuid : ĠString ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmanager !!. getC oin s ( uuid ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ see ĠI Manager . set Coins ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Coins ( uuid : ĠString , Ġamount : ĠDouble ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmanager !!. set Coins ( uuid , Ġamount ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ see ĠI Manager . add Coins ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd Coins ( uuid : ĠString , Ġamount : ĠDouble ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmanager !!. add Coins ( uuid , Ġamount ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ see ĠI Manager . remove Coins ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġremove Coins ( uuid : ĠString , Ġamount : ĠDouble ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmanager !!. remove Coins ( uuid , Ġamount ) ĊĠĠĠ Ġ} Ċ Ċ }