Skip to content

Commit 13d044d

Browse files
committed
Refactor OnTimeUser
1 parent 537ca4e commit 13d044d

File tree

4 files changed

+37
-55
lines changed

4 files changed

+37
-55
lines changed

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

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,11 @@ import org.anvilpowered.anvil.core.db.DomainEntity
55
import java.time.LocalDateTime
66
import java.util.UUID
77

8-
data class OnTimeUser(
9-
override val id: UUID,
10-
val username: String,
11-
val createdUtc: LocalDateTime,
12-
val playTime: Long,
13-
val bonusTime: Long,
14-
) : DomainEntity {
8+
interface OnTimeUser : DomainEntity {
9+
val username: String
10+
val createdUtc: LocalDateTime
11+
val playTime: Long
12+
val bonusTime: Long
1513

1614
data class CreateDto(
1715
val id: UUID,

core/src/main/kotlin/org/anvilpowered/ontime/core/OnTimePlugin.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import org.anvilpowered.anvil.core.config.Registry
2424
import org.anvilpowered.kbrig.tree.LiteralCommandNode
2525
import org.anvilpowered.ontime.api.config.OnTimeKeys
2626
import org.anvilpowered.ontime.core.command.OnTimeCommandFactory
27-
import org.anvilpowered.ontime.core.db.OnTimeUserTable
27+
import org.anvilpowered.ontime.core.db.OnTimeUsers
2828
import org.anvilpowered.ontime.core.registrar.Registrar
2929
import org.anvilpowered.ontime.core.task.LuckPermsSyncTaskService
3030
import org.apache.logging.log4j.Logger
@@ -90,7 +90,7 @@ class OnTimePlugin(
9090
logger.info("Finished connecting to database.")
9191
logger.info("Creating tables...")
9292
transaction {
93-
SchemaUtils.createMissingTablesAndColumns(OnTimeUserTable)
93+
SchemaUtils.createMissingTablesAndColumns(OnTimeUsers)
9494
}
9595
logger.info("Finished creating tables.")
9696
}

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

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -39,31 +39,31 @@ class OnTimeUserRepositoryImpl(
3939
private val logger: Logger,
4040
) : OnTimeUserRepository {
4141
override suspend fun create(item: OnTimeUser.CreateDto): OnTimeUser = newSuspendedTransaction {
42-
val user = OnTimeUserEntity.new(item.id) {
42+
val user = DBOnTimeUser.new(item.id) {
4343
username = item.username
4444
createdUtc = LocalDateTime.now(ZoneId.of("UTC"))
4545
playTime = 0
4646
bonusTime = 0
4747
}
4848
logger.info("Created new OnTimeUser ${user.id.value} with data $item")
49-
user.toOnTimeUser()
49+
user
5050
}
5151

5252
override suspend fun put(item: OnTimeUser.CreateDto): MutableRepository.PutResult<OnTimeUser> = newSuspendedTransaction {
5353
val existingUser = getById(item.id)
5454
if (existingUser == null) {
5555
// create a new OnTimeUser
56-
val newUser = OnTimeUserEntity.new(item.id) {
56+
val newUser = DBOnTimeUser.new(item.id) {
5757
username = item.username
5858
createdUtc = LocalDateTime.now(ZoneId.of("UTC"))
5959
playTime = 0
6060
bonusTime = 0
6161
}
6262
logger.info("Created new OnTimeUser ${item.username} (${item.id}) with data $item")
63-
MutableRepository.PutResult(newUser.toOnTimeUser(), created = true)
63+
MutableRepository.PutResult(newUser, created = true)
6464
} else {
6565
logger.info(
66-
"Loaded existing OnTime user ${existingUser.username} (${existingUser.id}) with" +
66+
"Loaded existing OnTime user ${existingUser.username} (${existingUser.uuid}) with" +
6767
"play time ${existingUser.playTimeFormatted}, " +
6868
"bonus time ${existingUser.bonusTimeFormatted}, " +
6969
"and total time ${existingUser.totalTimeFormatted}",
@@ -73,77 +73,77 @@ class OnTimeUserRepositoryImpl(
7373
}
7474

7575
override suspend fun getAllUsernames(contains: String): SizedIterable<String> = newSuspendedTransaction {
76-
OnTimeUserEntity.find { OnTimeUserTable.username.lowerCase() like "%${contains.lowercase()}%" }.mapLazy { it.username }
76+
DBOnTimeUser.find { OnTimeUsers.username.lowerCase() like "%${contains.lowercase()}%" }.mapLazy { it.username }
7777
}
7878

7979
override suspend fun getByUsername(username: String): OnTimeUser? = newSuspendedTransaction {
80-
OnTimeUserEntity.find { OnTimeUserTable.username eq username }.firstOrNull()?.toOnTimeUser()
80+
DBOnTimeUser.find { OnTimeUsers.username eq username }.firstOrNull()
8181
}
8282

83-
private fun OnTimeUserEntity.addTime(time: Long) {
83+
private fun DBOnTimeUser.addTime(time: Long) {
8484
playTime += time
8585
logger.debug("Added {} seconds to User {}", time, id.value)
8686
}
8787

8888
override suspend fun addPlayTime(id: UUID, duration: Long): Long? = newSuspendedTransaction {
89-
OnTimeUserEntity.findById(id)?.let { user ->
89+
DBOnTimeUser.findById(id)?.let { user ->
9090
user.addTime(duration)
9191
user.playTime + user.bonusTime
9292
}
9393
}
9494

95-
private fun OnTimeUserEntity.setTime(time: Long) {
95+
private fun DBOnTimeUser.setTime(time: Long) {
9696
bonusTime = time - playTime
9797
logger.info("Set total time of user $username (${id.value}) to $time")
9898
}
9999

100100
override suspend fun setTotalTime(id: UUID, duration: Long): Boolean = newSuspendedTransaction {
101-
OnTimeUserEntity.findById(id)?.setTime(duration) != null
101+
DBOnTimeUser.findById(id)?.setTime(duration) != null
102102
}
103103

104104
override suspend fun setTotalTime(username: String, duration: Long) = newSuspendedTransaction {
105-
OnTimeUserEntity.find { OnTimeUserTable.username eq username }.firstOrNull()?.setTime(duration) != null
105+
DBOnTimeUser.find { OnTimeUsers.username eq username }.firstOrNull()?.setTime(duration) != null
106106
}
107107

108-
private fun OnTimeUserEntity.addBonusTime(time: Long) {
108+
private fun DBOnTimeUser.addBonusTime(time: Long) {
109109
bonusTime += time
110110
logger.info("Added $time seconds to user $username (${id.value})")
111111
}
112112

113113
override suspend fun addBonusTime(id: UUID, duration: Long): Boolean = newSuspendedTransaction {
114-
OnTimeUserEntity.findById(id)?.addBonusTime(duration) != null
114+
DBOnTimeUser.findById(id)?.addBonusTime(duration) != null
115115
}
116116

117117
override suspend fun addBonusTime(username: String, duration: Long): Boolean = newSuspendedTransaction {
118-
OnTimeUserEntity.find { OnTimeUserTable.username eq username }.firstOrNull()?.addBonusTime(duration) != null
118+
DBOnTimeUser.find { OnTimeUsers.username eq username }.firstOrNull()?.addBonusTime(duration) != null
119119
}
120120

121-
private fun OnTimeUserEntity.setBonusTime(time: Long) {
121+
private fun DBOnTimeUser.setBonusTime(time: Long) {
122122
bonusTime = time
123123
logger.info("Set bonus time of user $username (${id.value}) to $time")
124124
}
125125

126126
override suspend fun setBonusTime(id: UUID, duration: Long): Boolean = newSuspendedTransaction {
127-
OnTimeUserEntity.findById(id)?.setBonusTime(duration) != null
127+
DBOnTimeUser.findById(id)?.setBonusTime(duration) != null
128128
}
129129

130130
override suspend fun setBonusTime(username: String, duration: Long): Boolean = newSuspendedTransaction {
131-
OnTimeUserEntity.find { OnTimeUserTable.username eq username }.firstOrNull()?.setBonusTime(duration) != null
131+
DBOnTimeUser.find { OnTimeUsers.username eq username }.firstOrNull()?.setBonusTime(duration) != null
132132
}
133133

134134
override suspend fun getById(id: UUID): OnTimeUser? = newSuspendedTransaction {
135-
OnTimeUserEntity.findById(id)?.toOnTimeUser()
135+
DBOnTimeUser.findById(id)
136136
}
137137

138138
override suspend fun countAll(): Long = newSuspendedTransaction {
139-
OnTimeUserEntity.all().count()
139+
DBOnTimeUser.all().count()
140140
}
141141

142142
override suspend fun exists(id: UUID): Boolean = newSuspendedTransaction {
143-
OnTimeUserEntity.findById(id) != null
143+
DBOnTimeUser.findById(id) != null
144144
}
145145

146146
override suspend fun deleteById(id: UUID): Boolean = newSuspendedTransaction {
147-
OnTimeUserTable.deleteWhere { OnTimeUserTable.id eq id } > 0
147+
OnTimeUsers.deleteWhere { OnTimeUsers.id eq id } > 0
148148
}
149149
}

core/src/main/kotlin/org/anvilpowered/ontime/core/db/OnTimeUserTable.kt renamed to core/src/main/kotlin/org/anvilpowered/ontime/core/db/OnTimeUsers.kt

Lines changed: 8 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -23,38 +23,22 @@ import org.jetbrains.exposed.dao.UUIDEntity
2323
import org.jetbrains.exposed.dao.UUIDEntityClass
2424
import org.jetbrains.exposed.dao.id.EntityID
2525
import org.jetbrains.exposed.dao.id.UUIDTable
26-
import org.jetbrains.exposed.sql.ResultRow
2726
import org.jetbrains.exposed.sql.javatime.datetime
2827
import java.util.UUID
2928

30-
internal object OnTimeUserTable : UUIDTable("ontime_users") {
29+
internal object OnTimeUsers : UUIDTable("ontime_users") {
3130
val username = varchar("username", 16).uniqueIndex()
3231
val createdUtc = datetime("created_utc")
3332
val playTime = long("play_time")
3433
val bonusTime = long("bonus_time")
3534
}
3635

37-
internal class OnTimeUserEntity(id: EntityID<UUID>) : UUIDEntity(id) {
38-
var username by OnTimeUserTable.username
39-
var createdUtc by OnTimeUserTable.createdUtc
40-
var playTime by OnTimeUserTable.playTime
41-
var bonusTime by OnTimeUserTable.bonusTime
36+
internal class DBOnTimeUser(id: EntityID<UUID>) : UUIDEntity(id), OnTimeUser {
37+
override val uuid: UUID = id.value
38+
override var username by OnTimeUsers.username
39+
override var createdUtc by OnTimeUsers.createdUtc
40+
override var playTime by OnTimeUsers.playTime
41+
override var bonusTime by OnTimeUsers.bonusTime
4242

43-
companion object : UUIDEntityClass<OnTimeUserEntity>(OnTimeUserTable)
43+
companion object : UUIDEntityClass<DBOnTimeUser>(OnTimeUsers)
4444
}
45-
46-
internal fun OnTimeUserEntity.toOnTimeUser() = OnTimeUser(
47-
id = this.id.value,
48-
username = this.username,
49-
createdUtc = this.createdUtc,
50-
playTime = this.playTime,
51-
bonusTime = this.bonusTime,
52-
)
53-
54-
internal fun ResultRow.toOnTimeUser() = OnTimeUser(
55-
id = this[OnTimeUserTable.id].value,
56-
username = this[OnTimeUserTable.username],
57-
createdUtc = this[OnTimeUserTable.createdUtc],
58-
playTime = this[OnTimeUserTable.playTime],
59-
bonusTime = this[OnTimeUserTable.bonusTime],
60-
)

0 commit comments

Comments
 (0)