From c120eb95ad151ef2d2ccb7a64f5ef3bd1f9edc9d Mon Sep 17 00:00:00 2001 From: PotatoPresident <51728317+PotatoPresident@users.noreply.github.com> Date: Sun, 26 Dec 2021 08:55:43 -0800 Subject: [PATCH] Add postgresql support Code cleanup --- build.gradle | 3 ++ .../Databases.kt | 3 +- .../LedgerDatabaseExtension.kt | 42 ++++++++----------- 3 files changed, 22 insertions(+), 26 deletions(-) diff --git a/build.gradle b/build.gradle index f0215f2..d1a4432 100644 --- a/build.gradle +++ b/build.gradle @@ -40,6 +40,9 @@ dependencies { // MySQL implementation(include('mysql:mysql-connector-java:8.0.19')) + + // PostgreSQL + implementation(include("org.postgresql:postgresql:42.3.0")) } processResources { diff --git a/src/main/kotlin/net.quiltservertools.ledger.databases/Databases.kt b/src/main/kotlin/net.quiltservertools.ledger.databases/Databases.kt index 7b24792..54e52c0 100644 --- a/src/main/kotlin/net.quiltservertools.ledger.databases/Databases.kt +++ b/src/main/kotlin/net.quiltservertools.ledger.databases/Databases.kt @@ -3,5 +3,6 @@ package net.quiltservertools.ledger.databases enum class Databases { SQLITE, MYSQL, - H2 + H2, + POSTGRESQL } \ No newline at end of file diff --git a/src/main/kotlin/net.quiltservertools.ledger.databases/LedgerDatabaseExtension.kt b/src/main/kotlin/net.quiltservertools.ledger.databases/LedgerDatabaseExtension.kt index fec6a69..8d109cd 100644 --- a/src/main/kotlin/net.quiltservertools.ledger.databases/LedgerDatabaseExtension.kt +++ b/src/main/kotlin/net.quiltservertools.ledger.databases/LedgerDatabaseExtension.kt @@ -13,38 +13,30 @@ class LedgerDatabaseExtension : DatabaseExtension { override fun getConfigSpecs(): List = listOf(DatabaseExtensionSpec) override fun getDatabase(server: MinecraftServer): Database { - if (Ledger.config[DatabaseExtensionSpec.database] == Databases.H2) { - return Database.connect( - url = "jdbc:h2:${server.getSavePath(WorldSavePath.ROOT).resolve("ledger.h2").toFile()};MODE=MySQL", - driver = "org.h2.Driver" + return when (Ledger.config[DatabaseExtensionSpec.database]) { + Databases.SQLITE -> Database.connect( + url = "jdbc:sqlite:${server.getSavePath(WorldSavePath.ROOT).resolve("ledger.sqlite").pathString}", ) - } else if (Ledger.config[DatabaseExtensionSpec.database] == Databases.MYSQL) { - return Database.connect( + Databases.H2 -> Database.connect( + url = "jdbc:h2:${server.getSavePath(WorldSavePath.ROOT).resolve("ledger.h2").toFile()};MODE=MySQL" + ) + Databases.MYSQL -> Database.connect( url = "jdbc:mysql://${Ledger.config[DatabaseExtensionSpec.url]}?rewriteBatchedStatements=true", - driver = "com.mysql.cj.jdbc.Driver", + user = Ledger.config[DatabaseExtensionSpec.userName], + password = Ledger.config[DatabaseExtensionSpec.password] + ) + Databases.POSTGRESQL -> Database.connect( + url = "jdbc:postgresql://${Ledger.config[DatabaseExtensionSpec.url]}?rewriteBatchedStatements=true", user = Ledger.config[DatabaseExtensionSpec.userName], password = Ledger.config[DatabaseExtensionSpec.password] ) } - return sqlite(server) } - override fun getIdentifier(): Identifier { - if (Ledger.config[DatabaseExtensionSpec.database] == Databases.H2) { - return h2Identifier - } else if (Ledger.config[DatabaseExtensionSpec.database] == Databases.MYSQL) { - return mySqlIdentifier - - } - return Ledger.identifier(Ledger.DEFAULT_DATABASE) - } - - private fun sqlite(server: MinecraftServer) = Database.connect( - url = "jdbc:sqlite:${server.getSavePath(WorldSavePath.ROOT).resolve("ledger.sqlite").pathString}", - ) - - companion object { - val h2Identifier = Ledger.identifier("h2_extension") - val mySqlIdentifier = Ledger.identifier("mysql_extension") + override fun getIdentifier(): Identifier = when (Ledger.config[DatabaseExtensionSpec.database]) { + Databases.MYSQL -> Ledger.identifier("mysql_extension") + Databases.H2 -> Ledger.identifier("h2_extension") + Databases.POSTGRESQL -> Ledger.identifier("postgresql_extension") + else -> Ledger.identifier(Ledger.DEFAULT_DATABASE) } }