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
implementation(include('mysql:mysql-connector-java:8.0.19'))
// PostgreSQL
implementation(include("org.postgresql:postgresql:42.3.0"))
}
processResources {

View File

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

View File

@ -13,38 +13,30 @@ class LedgerDatabaseExtension : DatabaseExtension {
override fun getConfigSpecs(): List<ConfigSpec> = 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)
}
}