Skip to content

Commit c120eb9

Browse files
Add postgresql support
Code cleanup
1 parent 3b29214 commit c120eb9

3 files changed

Lines changed: 22 additions & 26 deletions

File tree

build.gradle

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ dependencies {
4040

4141
// MySQL
4242
implementation(include('mysql:mysql-connector-java:8.0.19'))
43+
44+
// PostgreSQL
45+
implementation(include("org.postgresql:postgresql:42.3.0"))
4346
}
4447

4548
processResources {

src/main/kotlin/net.quiltservertools.ledger.databases/Databases.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,6 @@ package net.quiltservertools.ledger.databases
33
enum class Databases {
44
SQLITE,
55
MYSQL,
6-
H2
6+
H2,
7+
POSTGRESQL
78
}

src/main/kotlin/net.quiltservertools.ledger.databases/LedgerDatabaseExtension.kt

Lines changed: 17 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -13,38 +13,30 @@ class LedgerDatabaseExtension : DatabaseExtension {
1313
override fun getConfigSpecs(): List<ConfigSpec> = listOf(DatabaseExtensionSpec)
1414

1515
override fun getDatabase(server: MinecraftServer): Database {
16-
if (Ledger.config[DatabaseExtensionSpec.database] == Databases.H2) {
17-
return Database.connect(
18-
url = "jdbc:h2:${server.getSavePath(WorldSavePath.ROOT).resolve("ledger.h2").toFile()};MODE=MySQL",
19-
driver = "org.h2.Driver"
16+
return when (Ledger.config[DatabaseExtensionSpec.database]) {
17+
Databases.SQLITE -> Database.connect(
18+
url = "jdbc:sqlite:${server.getSavePath(WorldSavePath.ROOT).resolve("ledger.sqlite").pathString}",
2019
)
21-
} else if (Ledger.config[DatabaseExtensionSpec.database] == Databases.MYSQL) {
22-
return Database.connect(
20+
Databases.H2 -> Database.connect(
21+
url = "jdbc:h2:${server.getSavePath(WorldSavePath.ROOT).resolve("ledger.h2").toFile()};MODE=MySQL"
22+
)
23+
Databases.MYSQL -> Database.connect(
2324
url = "jdbc:mysql://${Ledger.config[DatabaseExtensionSpec.url]}?rewriteBatchedStatements=true",
24-
driver = "com.mysql.cj.jdbc.Driver",
25+
user = Ledger.config[DatabaseExtensionSpec.userName],
26+
password = Ledger.config[DatabaseExtensionSpec.password]
27+
)
28+
Databases.POSTGRESQL -> Database.connect(
29+
url = "jdbc:postgresql://${Ledger.config[DatabaseExtensionSpec.url]}?rewriteBatchedStatements=true",
2530
user = Ledger.config[DatabaseExtensionSpec.userName],
2631
password = Ledger.config[DatabaseExtensionSpec.password]
2732
)
2833
}
29-
return sqlite(server)
30-
}
31-
32-
override fun getIdentifier(): Identifier {
33-
if (Ledger.config[DatabaseExtensionSpec.database] == Databases.H2) {
34-
return h2Identifier
35-
} else if (Ledger.config[DatabaseExtensionSpec.database] == Databases.MYSQL) {
36-
return mySqlIdentifier
37-
38-
}
39-
return Ledger.identifier(Ledger.DEFAULT_DATABASE)
4034
}
4135

42-
private fun sqlite(server: MinecraftServer) = Database.connect(
43-
url = "jdbc:sqlite:${server.getSavePath(WorldSavePath.ROOT).resolve("ledger.sqlite").pathString}",
44-
)
45-
46-
companion object {
47-
val h2Identifier = Ledger.identifier("h2_extension")
48-
val mySqlIdentifier = Ledger.identifier("mysql_extension")
36+
override fun getIdentifier(): Identifier = when (Ledger.config[DatabaseExtensionSpec.database]) {
37+
Databases.MYSQL -> Ledger.identifier("mysql_extension")
38+
Databases.H2 -> Ledger.identifier("h2_extension")
39+
Databases.POSTGRESQL -> Ledger.identifier("postgresql_extension")
40+
else -> Ledger.identifier(Ledger.DEFAULT_DATABASE)
4941
}
5042
}

0 commit comments

Comments
 (0)