Skip to content
This repository was archived by the owner on Dec 10, 2025. It is now read-only.

Commit b53ada1

Browse files
committed
refactor: improve average duration calculation and handle empty results in PlaytimeImpl
1 parent ed42f71 commit b53ada1

File tree

1 file changed

+20
-3
lines changed
  • surf-cloud-core/surf-cloud-core-common/src/main/kotlin/dev/slne/surf/cloud/core/common/player/playtime

1 file changed

+20
-3
lines changed

surf-cloud-core/surf-cloud-core-common/src/main/kotlin/dev/slne/surf/cloud/core/common/player/playtime/PlaytimeImpl.kt

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,20 +122,37 @@ class PlaytimeImpl(private val entries: ObjectList<PlaytimeEntry>) : Playtime {
122122
since: ZonedDateTime?
123123
): Duration {
124124
if (since == null) {
125-
return entries
125+
val values = entries
126126
.filter { category == null || it.category.equals(category, true) }
127127
.groupBy { it.server }
128128
.mapValuesTo(mutableObject2ObjectMapOf()) { (_, entry) -> entry.sumOf { it.durationSeconds } }
129129
.values
130+
131+
if (values.isEmpty()) {
132+
return Duration.ZERO
133+
}
134+
135+
return values
130136
.average()
131137
.seconds
132138
}
133139

134-
return entries
135-
.filter { (category == null || it.category.equals(category, true)) && it.createdAt.isAfter(since) }
140+
val values = entries
141+
.filter {
142+
(category == null || it.category.equals(
143+
category,
144+
true
145+
)) && it.createdAt.isAfter(since)
146+
}
136147
.groupBy { it.server }
137148
.mapValuesTo(mutableObject2ObjectMapOf()) { (_, entry) -> entry.sumOf { it.durationSeconds } }
138149
.values
150+
151+
if (values.isEmpty()) {
152+
return Duration.ZERO
153+
}
154+
155+
return values
139156
.average()
140157
.seconds
141158
}

0 commit comments

Comments
 (0)