Add postgresql support

Code cleanup
This commit is contained in:
PotatoPresident 2021-12-26 08:55:43 -08:00
parent 3b292146b2
commit c120eb95ad
3 changed files with 22 additions and 26 deletions

View File

@ -40,6 +40,9 @@ dependencies {
// MySQL // MySQL
implementation(include('mysql:mysql-connector-java:8.0.19')) implementation(include('mysql:mysql-connector-java:8.0.19'))
// PostgreSQL
implementation(include("org.postgresql:postgresql:42.3.0"))
} }
processResources { processResources {

View File

@ -3,5 +3,6 @@ package net.quiltservertools.ledger.databases
enum class Databases { enum class Databases {
SQLITE, SQLITE,
MYSQL, MYSQL,
H2 H2,
POSTGRESQL
} }

View File

@ -13,38 +13,30 @@ class LedgerDatabaseExtension : DatabaseExtension {
override fun getConfigSpecs(): List<ConfigSpec> = listOf(DatabaseExtensionSpec) override fun getConfigSpecs(): List<ConfigSpec> = listOf(DatabaseExtensionSpec)
override fun getDatabase(server: MinecraftServer): Database { override fun getDatabase(server: MinecraftServer): Database {
if (Ledger.config[DatabaseExtensionSpec.database] == Databases.H2) { return when (Ledger.config[DatabaseExtensionSpec.database]) {
return Database.connect( Databases.SQLITE -> Database.connect(
url = "jdbc:h2:${server.getSavePath(WorldSavePath.ROOT).resolve("ledger.h2").toFile()};MODE=MySQL", url = "jdbc:sqlite:${server.getSavePath(WorldSavePath.ROOT).resolve("ledger.sqlite").pathString}",
driver = "org.h2.Driver"
) )
} else if (Ledger.config[DatabaseExtensionSpec.database] == Databases.MYSQL) { Databases.H2 -> Database.connect(
return 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", 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], user = Ledger.config[DatabaseExtensionSpec.userName],
password = Ledger.config[DatabaseExtensionSpec.password] password = Ledger.config[DatabaseExtensionSpec.password]
) )
} }
return sqlite(server)
} }
override fun getIdentifier(): Identifier { override fun getIdentifier(): Identifier = when (Ledger.config[DatabaseExtensionSpec.database]) {
if (Ledger.config[DatabaseExtensionSpec.database] == Databases.H2) { Databases.MYSQL -> Ledger.identifier("mysql_extension")
return h2Identifier Databases.H2 -> Ledger.identifier("h2_extension")
} else if (Ledger.config[DatabaseExtensionSpec.database] == Databases.MYSQL) { Databases.POSTGRESQL -> Ledger.identifier("postgresql_extension")
return mySqlIdentifier else -> Ledger.identifier(Ledger.DEFAULT_DATABASE)
}
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")
} }
} }