Skip to content

Commit 79d8fd1

Browse files
committed
Re-add exposed
1 parent 13d044d commit 79d8fd1

File tree

7 files changed

+63
-10
lines changed

7 files changed

+63
-10
lines changed

api/build.gradle.kts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,8 @@ plugins {
55

66
dependencies {
77
implementation(libs.anvil.core)
8+
9+
compileOnlyApi(platform(libs.adventure.bom))
10+
compileOnlyApi("net.kyori:adventure-text-serializer-legacy")
11+
compileOnlyApi("net.kyori:adventure-text-serializer-plain")
812
}

api/src/main/kotlin/org/anvilpowered/ontime/api/user/OnTimeUserRepository.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package org.anvilpowered.ontime.api.user
22

33
import org.anvilpowered.anvil.core.db.MutableRepository
4-
import org.jetbrains.exposed.sql.SizedIterable
4+
import org.anvilpowered.anvil.core.db.SizedIterable
55
import java.util.UUID
66

77
interface OnTimeUserRepository : MutableRepository<OnTimeUser, OnTimeUser.CreateDto> {

core/build.gradle.kts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,16 @@
11
dependencies {
22
api(project(":ontime-api"))
33
api(libs.anvil.core)
4+
5+
api(platform(libs.exposed.bom))
6+
api(libs.bundles.exposed) {
7+
exclude(group = "org.slf4j")
8+
}
9+
410
compileOnlyApi(libs.luckperms)
5-
runtimeOnly(libs.driver.mariadb)
11+
12+
runtimeOnly(libs.driver.mariadb) {
13+
exclude(group = "org.slf4j")
14+
}
615
runtimeOnly(libs.driver.postgresql)
716
}

core/src/main/kotlin/org/anvilpowered/ontime/core/command/OnTimeUserCommand.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ suspend fun CommandExecutionScope<CommandSource>.extractOnTimeUserSource(
8787
playerProvider: suspend () -> Player = { extractPlayerSource() },
8888
): OnTimeUser {
8989
val player = playerProvider()
90-
val user = onTimeUserRepository.getById(player.id)
90+
val user = onTimeUserRepository.findById(player.id)
9191
if (user == null) {
9292
context.source.sendMessage(
9393
Component.text()

core/src/main/kotlin/org/anvilpowered/ontime/core/db/OnTimeUserRepositoryImpl.kt

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,13 @@
1919
package org.anvilpowered.ontime.core.db
2020

2121
import org.anvilpowered.anvil.core.db.MutableRepository
22+
import org.anvilpowered.anvil.core.db.SizedIterable
2223
import org.anvilpowered.ontime.api.user.OnTimeUser
2324
import org.anvilpowered.ontime.api.user.OnTimeUserRepository
2425
import org.anvilpowered.ontime.api.user.bonusTimeFormatted
2526
import org.anvilpowered.ontime.api.user.playTimeFormatted
2627
import org.anvilpowered.ontime.api.user.totalTimeFormatted
2728
import org.apache.logging.log4j.Logger
28-
import org.jetbrains.exposed.sql.SizedIterable
2929
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
3030
import org.jetbrains.exposed.sql.deleteWhere
3131
import org.jetbrains.exposed.sql.lowerCase
@@ -35,9 +35,7 @@ import java.time.LocalDateTime
3535
import java.time.ZoneId
3636
import java.util.UUID
3737

38-
class OnTimeUserRepositoryImpl(
39-
private val logger: Logger,
40-
) : OnTimeUserRepository {
38+
class OnTimeUserRepositoryImpl(private val logger: Logger) : OnTimeUserRepository {
4139
override suspend fun create(item: OnTimeUser.CreateDto): OnTimeUser = newSuspendedTransaction {
4240
val user = DBOnTimeUser.new(item.id) {
4341
username = item.username
@@ -50,7 +48,7 @@ class OnTimeUserRepositoryImpl(
5048
}
5149

5250
override suspend fun put(item: OnTimeUser.CreateDto): MutableRepository.PutResult<OnTimeUser> = newSuspendedTransaction {
53-
val existingUser = getById(item.id)
51+
val existingUser = findById(item.id)
5452
if (existingUser == null) {
5553
// create a new OnTimeUser
5654
val newUser = DBOnTimeUser.new(item.id) {
@@ -74,7 +72,7 @@ class OnTimeUserRepositoryImpl(
7472

7573
override suspend fun getAllUsernames(contains: String): SizedIterable<String> = newSuspendedTransaction {
7674
DBOnTimeUser.find { OnTimeUsers.username.lowerCase() like "%${contains.lowercase()}%" }.mapLazy { it.username }
77-
}
75+
}.wrap()
7876

7977
override suspend fun getByUsername(username: String): OnTimeUser? = newSuspendedTransaction {
8078
DBOnTimeUser.find { OnTimeUsers.username eq username }.firstOrNull()
@@ -131,7 +129,7 @@ class OnTimeUserRepositoryImpl(
131129
DBOnTimeUser.find { OnTimeUsers.username eq username }.firstOrNull()?.setBonusTime(duration) != null
132130
}
133131

134-
override suspend fun getById(id: UUID): OnTimeUser? = newSuspendedTransaction {
132+
override suspend fun findById(id: UUID): OnTimeUser? = newSuspendedTransaction {
135133
DBOnTimeUser.findById(id)
136134
}
137135

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
/*
2+
* OnTime - AnvilPowered.org
3+
* Copyright (C) 2019-2024 Contributors
4+
*
5+
* This program is free software: you can redistribute it and/or modify
6+
* it under the terms of the GNU Affero General Public License as published by
7+
* the Free Software Foundation, either version 3 of the License, or
8+
* (at your option) any later version.
9+
*
10+
* This program is distributed in the hope that it will be useful,
11+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13+
* GNU Affero General Public License for more details.
14+
*
15+
* You should have received a copy of the GNU Affero General Public License
16+
* along with this program. If not, see <https://www.gnu.org/licenses/>.
17+
*/
18+
19+
package org.anvilpowered.ontime.core.db
20+
21+
import org.anvilpowered.anvil.core.db.SizedIterable as AnvilSizedIterable
22+
import org.jetbrains.exposed.sql.SizedIterable as ExposedSizedIterable
23+
24+
fun <T> ExposedSizedIterable<T>.wrap(): AnvilSizedIterable<T> = SizedIterableWrapper(this)
25+
26+
private class SizedIterableWrapper<out T>(
27+
private val delegate: ExposedSizedIterable<T>,
28+
) : AnvilSizedIterable<T> {
29+
override fun copy(): AnvilSizedIterable<T> = SizedIterableWrapper(delegate.copy())
30+
override fun count(): Long = delegate.count()
31+
override fun empty(): Boolean = delegate.empty()
32+
override fun iterator(): Iterator<T> = delegate.iterator()
33+
override fun limit(n: Int, offset: Long): AnvilSizedIterable<T> = SizedIterableWrapper(delegate.limit(n, offset))
34+
}

gradle/libs.versions.toml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,20 @@ anvil-velocity = { module = "org.anvilpowered:anvil-velocity", version.ref = "an
1010
arrow-core = "io.arrow-kt:arrow-core:1.2.2"
1111
driver-mariadb = "org.mariadb.jdbc:mariadb-java-client:3.3.3"
1212
driver-postgresql = "org.postgresql:postgresql:42.7.2"
13+
exposed-bom = "org.jetbrains.exposed:exposed-bom:0.50.1"
14+
exposed-core = { module = "org.jetbrains.exposed:exposed-core" }
15+
exposed-dao = { module = "org.jetbrains.exposed:exposed-dao" }
16+
exposed-jdbc = { module = "org.jetbrains.exposed:exposed-jdbc" }
17+
exposed-java-time = { module = "org.jetbrains.exposed:exposed-java-time" }
1318
kotest = "io.kotest:kotest-runner-junit5-jvm:5.8.0"
1419
kotlinx-serialization = "org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3"
1520
luckperms = "net.luckperms:api:5.4"
1621
paper = "io.papermc.paper:paper-api:1.20.6-R0.1-SNAPSHOT"
1722
velocity = "com.velocitypowered:velocity-api:3.3.0-SNAPSHOT"
1823

24+
[bundles]
25+
exposed = ["exposed-core", "exposed-dao", "exposed-jdbc", "exposed-java-time"]
26+
1927
[plugins]
2028
kotlin-kapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "kotlin" }
2129
kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }

0 commit comments

Comments
 (0)