mirror of
https://github.com/BlockWorldGroup/Ledger-Databases.git
synced 2025-08-17 19:49:42 +08:00
Add postgresql support
Code cleanup
This commit is contained in:
parent
3b292146b2
commit
c120eb95ad
@ -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 {
|
||||||
|
@ -3,5 +3,6 @@ package net.quiltservertools.ledger.databases
|
|||||||
enum class Databases {
|
enum class Databases {
|
||||||
SQLITE,
|
SQLITE,
|
||||||
MYSQL,
|
MYSQL,
|
||||||
H2
|
H2,
|
||||||
|
POSTGRESQL
|
||||||
}
|
}
|
@ -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")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user