Skip to content

Commit 03779fa

Browse files
committed
Migrate to JetBrains Exposed
1 parent 9cf4c8d commit 03779fa

22 files changed

+597
-1253
lines changed

build.gradle.kts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ repositories {
1919

2020
dependencies {
2121
val ktor_version = property("ktor_version")
22+
val exposed_version = property("exposed_version")
2223

2324
testImplementation("org.jetbrains.kotlin:kotlin-test")
2425

@@ -32,6 +33,12 @@ dependencies {
3233

3334
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.1")
3435

36+
implementation("org.jetbrains.exposed:exposed-core:$exposed_version")
37+
implementation("org.jetbrains.exposed:exposed-jdbc:$exposed_version")
38+
implementation("org.jetbrains.exposed:exposed-kotlin-datetime:$exposed_version")
39+
implementation("org.jetbrains.exposed:exposed-json:$exposed_version")
40+
implementation("org.jetbrains.exposed:exposed-dao:$exposed_version")
41+
3542
implementation("com.mojang:datafixerupper:7.0.14")
3643
implementation("com.mojang:brigadier:1.0.18")
3744
}

gradle.properties

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
kotlin.code.style=official
22
ktor_version=2.3.9
3-
version=1.5.6
3+
version=2.0
4+
exposed_version=0.54.0

src/main/kotlin/net/mcbrawls/api/Main.kt

Lines changed: 183 additions & 251 deletions
Large diffs are not rendered by default.

src/main/kotlin/net/mcbrawls/api/Rank.kt

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,18 @@ import kotlinx.serialization.Serializable
66
* Ranks on the MC Brawls Minecraft server.
77
*/
88
@Serializable(with = RankSerializer::class)
9-
enum class Rank {
10-
ADMIN,
11-
BUILDER,
12-
MODERATOR,
13-
MCCIT,
14-
PARTNER,
15-
STAFF,
16-
DEFAULT;
17-
}
9+
enum class Rank(private val rankId: String) {
10+
ADMIN("admin"),
11+
BUILDER("builder"),
12+
MODERATOR("moderator"),
13+
MCCIT("mccit"),
14+
PARTNER("partner"),
15+
STAFF("staff"),
16+
DEFAULT("default");
17+
18+
companion object {
19+
private val BY_ID = entries.associateBy(Rank::rankId)
20+
21+
fun fromId(id: String): Rank? = BY_ID[id]
22+
}
23+
}

src/main/kotlin/net/mcbrawls/api/database/AuthenticatableDatabase.kt

Lines changed: 0 additions & 38 deletions
This file was deleted.
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package net.mcbrawls.api.database
2+
3+
import org.jetbrains.exposed.sql.Database
4+
5+
/**
6+
* Manages the remote Brawls MySQL database.
7+
*/
8+
object BrawlsDatabaseFactory {
9+
/**
10+
* Loads the configuration from disk.
11+
*/
12+
fun createDatabase(schema: String): Database {
13+
val url = ConnectionConfig.url
14+
return Database.connect(
15+
url = "jdbc:mysql://$url/$schema",
16+
user = ConnectionConfig.username,
17+
password = ConnectionConfig.password,
18+
)
19+
}
20+
21+
private object ConnectionConfig {
22+
val url = env("URL")
23+
val username = env("USERNAME")
24+
val password = env("PASSWORD")
25+
26+
private fun env(name: String): String {
27+
val fullName = "BRAWLS_DB_$name"
28+
return System.getenv(fullName) ?: throw IllegalArgumentException("Environment variable not found: $fullName")
29+
}
30+
}
31+
}

src/main/kotlin/net/mcbrawls/api/database/Database.kt

Lines changed: 0 additions & 75 deletions
This file was deleted.

src/main/kotlin/net/mcbrawls/api/database/DatabaseController.kt

Lines changed: 0 additions & 104 deletions
This file was deleted.

0 commit comments

Comments
 (0)