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