mirror of
https://github.com/InsanusMokrassar/PlaguPoster.git
synced 2025-09-15 13:09:29 +00:00
fixes and fills
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package dev.inmo.plaguposter.ratings.selector
|
||||
|
||||
import com.soywiz.klock.DateTime
|
||||
import dev.inmo.plaguposter.posts.models.PostId
|
||||
import dev.inmo.plaguposter.ratings.repo.RatingsRepo
|
||||
import dev.inmo.plaguposter.ratings.selector.models.SelectorConfig
|
||||
@@ -8,11 +9,11 @@ class DefaultSelector (
|
||||
private val config: SelectorConfig,
|
||||
private val repo: RatingsRepo
|
||||
) : Selector {
|
||||
override suspend fun take(n: Int): List<PostId> {
|
||||
override suspend fun take(n: Int, now: DateTime): List<PostId> {
|
||||
val result = mutableListOf<PostId>()
|
||||
|
||||
do {
|
||||
val selected = config.active ?.ratings ?.select(repo, result) ?: break
|
||||
val selected = config.active(now.time) ?.ratings ?.select(repo, result) ?: break
|
||||
result.add(selected)
|
||||
} while (result.size < n)
|
||||
|
||||
|
@@ -1,7 +1,8 @@
|
||||
package dev.inmo.plaguposter.ratings.selector
|
||||
|
||||
import com.soywiz.klock.DateTime
|
||||
import dev.inmo.plaguposter.posts.models.PostId
|
||||
|
||||
interface Selector {
|
||||
suspend fun take(n: Int = 1): List<PostId>
|
||||
suspend fun take(n: Int = 1, now: DateTime = DateTime.now()): List<PostId>
|
||||
}
|
||||
|
@@ -1,11 +1,12 @@
|
||||
package dev.inmo.plaguposter.ratings.selector.models
|
||||
|
||||
import com.soywiz.klock.DateTime
|
||||
import com.soywiz.klock.Time
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
data class SelectorConfig(
|
||||
val items: List<SelectorConfigItem>
|
||||
) {
|
||||
val active: SelectorConfigItem?
|
||||
get() = items.firstOrNull { it.time.isActive }
|
||||
fun active(now: Time = DateTime.now().time) = items.firstOrNull { it.time.isActive(now) }
|
||||
}
|
||||
|
@@ -17,8 +17,7 @@ class TimeConfig(
|
||||
@Transient
|
||||
val range = from .. to
|
||||
|
||||
val isActive: Boolean
|
||||
get() = DateTime.now().time in range
|
||||
fun isActive(now: Time): Boolean = now in range
|
||||
|
||||
|
||||
object TimeSerializer : KSerializer<Time> {
|
||||
|
Reference in New Issue
Block a user