Skip to content

Commit 7bbc2ab

Browse files
Redo things
1 parent 8b925fa commit 7bbc2ab

11 files changed

Lines changed: 88 additions & 114 deletions

File tree

build.gradle

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,6 @@ repositories {
1919
maven {
2020
url = "https://oss.sonatype.org/content/repositories/snapshots"
2121
}
22-
maven {
23-
url = "https://maven.bymartrixx.me/"
24-
}
2522
}
2623

2724
dependencies {
@@ -34,20 +31,20 @@ dependencies {
3431
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
3532

3633
// Yes this has to be capitalised
37-
modImplementation "com.github.quiltservertools:Ledger:1.3.0"
34+
modImplementation "com.github.quiltservertools:Ledger:1.3.0+local"
3835

3936
modImplementation "net.fabricmc:fabric-language-kotlin:1.9.4+kotlin.1.8.21"
4037

4138
implementation("com.zaxxer:HikariCP:5.0.1")
4239

4340
// H2
44-
implementation(include("com.h2database:h2:1.4.200"))
41+
implementation(include("com.h2database:h2:2.2.224"))
4542

4643
// MySQL
47-
implementation(include('mysql:mysql-connector-java:8.0.19'))
44+
implementation(include('mysql:mysql-connector-java:8.3.0'))
4845

4946
// PostgreSQL
50-
implementation(include("org.postgresql:postgresql:42.3.0"))
47+
implementation(include("org.postgresql:postgresql:42.7.3"))
5148
}
5249

5350
processResources {

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

Lines changed: 0 additions & 50 deletions
This file was deleted.
Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
package net.quiltservertools.ledger.databases
22

3-
import com.github.quiltservertools.libs.com.uchuhimo.konf.ConfigSpec
3+
import com.uchuhimo.konf.ConfigSpec
44

55
object DatabaseExtensionSpec : ConfigSpec("database_extensions") {
6-
val database by optional(Databases.SQLITE, "database")
6+
val database by required<Databases>("database")
77
val userName by optional("root", "username")
88
val password by optional("", "password")
99
val url by optional("localhost", "url")
10+
val properties by optional(mapOf<String, String>(), "properties")
1011
val maxPoolSize by optional(10, "maxPoolSize")
11-
}
12+
val connectionTimeout by optional(60000L, "connectionTimeout")
13+
}
Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
package net.quiltservertools.ledger.databases
22

3-
import net.quiltservertools.ledger.databases.databases.*
3+
import net.quiltservertools.ledger.databases.databases.H2Database
4+
import net.quiltservertools.ledger.databases.databases.LedgerDatabase
5+
import net.quiltservertools.ledger.databases.databases.MySQL
6+
import net.quiltservertools.ledger.databases.databases.PostgreSQL
7+
import net.quiltservertools.ledger.databases.databases.SQLite
8+
49

510
enum class Databases(val database: LedgerDatabase) {
6-
SQLITE(SQLite),
711
MYSQL(MySQL),
812
H2(H2Database),
9-
POSTGRESQL(PostgreSQL)
13+
POSTGRESQL(PostgreSQL),
14+
SQLITE(SQLite)
1015
}

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

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,18 @@ package net.quiltservertools.ledger.databases
22

33
import com.github.quiltservertools.ledger.Ledger
44
import com.github.quiltservertools.ledger.api.DatabaseExtension
5-
import com.github.quiltservertools.libs.com.uchuhimo.konf.ConfigSpec
6-
import net.minecraft.server.MinecraftServer
5+
import com.uchuhimo.konf.ConfigSpec
76
import net.minecraft.util.Identifier
8-
import org.jetbrains.exposed.sql.Database
7+
import java.nio.file.Path
8+
import javax.sql.DataSource
99

1010
class LedgerDatabaseExtension : DatabaseExtension {
1111
override fun getConfigSpecs(): List<ConfigSpec> = listOf(DatabaseExtensionSpec)
1212

13-
override fun getDatabase(server: MinecraftServer): Database {
14-
return Ledger.config[DatabaseExtensionSpec.database].database.getDatabase(server)
13+
override fun getDataSource(savePath: Path): DataSource {
14+
return Ledger.config[DatabaseExtensionSpec.database].database.getDataSource(savePath)
1515
}
1616

17-
override fun getIdentifier(): Identifier = Ledger.config[DatabaseExtensionSpec.database].database.getDatabaseIdentifier()
17+
override fun getIdentifier(): Identifier =
18+
Ledger.config[DatabaseExtensionSpec.database].database.getDatabaseIdentifier()
1819
}

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,15 @@ package net.quiltservertools.ledger.databases
22

33
import com.github.quiltservertools.ledger.api.ExtensionManager
44
import net.fabricmc.api.DedicatedServerModInitializer
5+
import net.minecraft.util.Identifier
6+
7+
const val MOD_ID = "ledger-databases"
8+
9+
object LedgerDatabases : DedicatedServerModInitializer {
510

6-
class LedgerDatabases : DedicatedServerModInitializer {
711
override fun onInitializeServer() {
812
ExtensionManager.registerExtension(LedgerDatabaseExtension())
913
}
14+
15+
fun identifier(path: String) = Identifier(MOD_ID, path)
1016
}
Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
package net.quiltservertools.ledger.databases.databases
22

3-
import com.github.quiltservertools.ledger.Ledger
4-
import net.minecraft.server.MinecraftServer
5-
import net.minecraft.util.WorldSavePath
6-
import org.jetbrains.exposed.sql.Database
3+
import net.quiltservertools.ledger.databases.LedgerDatabases
4+
import org.h2.jdbcx.JdbcDataSource
5+
import java.nio.file.Path
6+
import javax.sql.DataSource
7+
import kotlin.io.path.pathString
78

89
object H2Database : LedgerDatabase {
9-
override fun getDatabase(server: MinecraftServer) = Database.connect(
10-
url = "jdbc:h2:${server.getSavePath(WorldSavePath.ROOT).resolve("ledger.h2").toFile()};MODE=MySQL"
11-
)
10+
override fun getDataSource(savePath: Path): DataSource = JdbcDataSource().apply {
11+
setURL("jdbc:h2:${savePath.pathString};MODE=MySQL")
12+
}
1213

13-
override fun getDatabaseIdentifier() = Ledger.identifier("h2")
14+
override fun getDatabaseIdentifier() = LedgerDatabases.identifier("h2")
1415
}
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package net.quiltservertools.ledger.databases.databases
22

3-
import net.minecraft.server.MinecraftServer
43
import net.minecraft.util.Identifier
5-
import org.jetbrains.exposed.sql.Database
4+
import java.nio.file.Path
5+
import javax.sql.DataSource
66

77
interface LedgerDatabase {
8-
fun getDatabase(server: MinecraftServer): Database
8+
fun getDataSource(savePath: Path): DataSource
99
fun getDatabaseIdentifier(): Identifier
1010
}
Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,35 @@
11
package net.quiltservertools.ledger.databases.databases
22

33
import com.github.quiltservertools.ledger.Ledger
4-
import net.minecraft.server.MinecraftServer
4+
import com.zaxxer.hikari.HikariConfig
5+
import com.zaxxer.hikari.HikariDataSource
56
import net.quiltservertools.ledger.databases.DatabaseExtensionSpec
6-
import org.jetbrains.exposed.sql.Database
7+
import net.quiltservertools.ledger.databases.LedgerDatabases
8+
import java.nio.file.Path
9+
import javax.sql.DataSource
710

811
object MySQL : LedgerDatabase {
9-
override fun getDatabase(server: MinecraftServer): Database {
10-
var url = "jdbc:mysql://${Ledger.config[DatabaseExtensionSpec.url]}?rewriteBatchedStatements=true"
11-
for (arg in Ledger.config[DatabaseExtensionSpec.properties]) {
12-
url = url.plus("&$arg")
12+
override fun getDataSource(savePath: Path): DataSource = HikariDataSource(HikariConfig().apply {
13+
jdbcUrl = "jdbc:mysql://${Ledger.config[DatabaseExtensionSpec.url]}"
14+
username = Ledger.config[DatabaseExtensionSpec.userName]
15+
password = Ledger.config[DatabaseExtensionSpec.password]
16+
maximumPoolSize = Ledger.config[DatabaseExtensionSpec.maxPoolSize]
17+
connectionTimeout = Ledger.config[DatabaseExtensionSpec.connectionTimeout]
18+
addDataSourceProperty("rewriteBatchedStatements", "true")
19+
addDataSourceProperty("cachePrepStmts", true)
20+
addDataSourceProperty("prepStmtCacheSize", 250)
21+
addDataSourceProperty("prepStmtCacheSqlLimit", 2048)
22+
addDataSourceProperty("useServerPrepStmts", true)
23+
addDataSourceProperty("cacheCallableStmts", true)
24+
addDataSourceProperty("cacheResultSetMetadata", true)
25+
addDataSourceProperty("cacheServerConfiguration", true)
26+
addDataSourceProperty("useLocalSessionState", true)
27+
addDataSourceProperty("elideSetAutoCommits", true)
28+
addDataSourceProperty("alwaysSendSetIsolation", false)
29+
for ((key, value) in Ledger.config[DatabaseExtensionSpec.properties]) {
30+
addDataSourceProperty(key, value)
1331
}
14-
return Database.connect(
15-
url = url,
16-
user = Ledger.config[DatabaseExtensionSpec.userName],
17-
password = Ledger.config[DatabaseExtensionSpec.password]
18-
)
19-
}
32+
})
2033

21-
override fun getDatabaseIdentifier() = Ledger.identifier("mysql")
34+
override fun getDatabaseIdentifier() = LedgerDatabases.identifier("mysql")
2235
}
Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,23 @@
11
package net.quiltservertools.ledger.databases.databases
22

33
import com.github.quiltservertools.ledger.Ledger
4-
import net.minecraft.server.MinecraftServer
4+
import com.zaxxer.hikari.HikariConfig
5+
import com.zaxxer.hikari.HikariDataSource
56
import net.quiltservertools.ledger.databases.DatabaseExtensionSpec
6-
import org.jetbrains.exposed.sql.Database
7+
import net.quiltservertools.ledger.databases.LedgerDatabases
8+
import java.nio.file.Path
9+
import javax.sql.DataSource
710

811
object PostgreSQL : LedgerDatabase {
9-
override fun getDatabase(server: MinecraftServer): Database {
10-
var url = "jdbc:postgresql://${Ledger.config[DatabaseExtensionSpec.url]}?rewriteBatchedStatements=true"
11-
for (arg in Ledger.config[DatabaseExtensionSpec.properties]) {
12-
url = url.plus("&$arg")
12+
override fun getDataSource(savePath: Path): DataSource = HikariDataSource(HikariConfig().apply {
13+
jdbcUrl = "jdbc:postgresql://${Ledger.config[DatabaseExtensionSpec.url]}"
14+
username = Ledger.config[DatabaseExtensionSpec.userName]
15+
password = Ledger.config[DatabaseExtensionSpec.password]
16+
maximumPoolSize = Ledger.config[DatabaseExtensionSpec.maxPoolSize]
17+
for ((key, value) in Ledger.config[DatabaseExtensionSpec.properties]) {
18+
addDataSourceProperty(key, value)
1319
}
14-
return Database.connect(
15-
url = url,
16-
user = Ledger.config[DatabaseExtensionSpec.userName],
17-
password = Ledger.config[DatabaseExtensionSpec.password]
18-
)
19-
}
20+
})
2021

21-
override fun getDatabaseIdentifier() = Ledger.identifier("postgresql")
22+
override fun getDatabaseIdentifier() = LedgerDatabases.identifier("postgresql")
2223
}

0 commit comments

Comments
 (0)