PlaguPoster/ratings/src/jvmMain/kotlin/Plugin.kt

38 lines
1.3 KiB
Kotlin
Raw Normal View History

2022-08-21 10:03:27 +00:00
package dev.inmo.plaguposter.ratings
2022-09-04 09:46:45 +00:00
import dev.inmo.micro_utils.coroutines.subscribeSafelyWithoutExceptions
2023-01-18 17:22:49 +00:00
import dev.inmo.micro_utils.koin.singleWithBinds
2022-09-04 09:46:45 +00:00
import dev.inmo.micro_utils.repos.unset
2022-08-21 10:03:27 +00:00
import dev.inmo.plagubot.Plugin
2023-01-18 17:22:49 +00:00
import dev.inmo.plaguposter.common.useCache
2022-09-04 09:46:45 +00:00
import dev.inmo.plaguposter.posts.repo.PostsRepo
2022-08-21 10:03:27 +00:00
import dev.inmo.plaguposter.ratings.exposed.ExposedRatingsRepo
2022-09-04 07:27:35 +00:00
import dev.inmo.plaguposter.ratings.repo.*
2022-09-04 09:46:45 +00:00
import dev.inmo.tgbotapi.extensions.behaviour_builder.BehaviourContext
2022-08-21 10:03:27 +00:00
import kotlinx.serialization.json.*
import org.jetbrains.exposed.sql.Database
2022-09-04 09:46:45 +00:00
import org.koin.core.Koin
2022-08-21 10:03:27 +00:00
import org.koin.core.module.Module
object Plugin : Plugin {
override fun Module.setupDI(database: Database, params: JsonObject) {
2023-01-18 17:22:49 +00:00
single { ExposedRatingsRepo(database) }
singleWithBinds<RatingsRepo> {
val base = get<ExposedRatingsRepo>()
if (useCache) {
CachedRatingsRepo(base, get())
} else {
base
}
}
2022-08-21 10:03:27 +00:00
}
2022-09-04 09:46:45 +00:00
override suspend fun BehaviourContext.setupBotPlugin(koin: Koin) {
val ratingsRepo = koin.get<RatingsRepo>()
koin.get<PostsRepo>().deletedObjectsIdsFlow.subscribeSafelyWithoutExceptions(this) {
ratingsRepo.unset(it)
}
}
2022-08-21 10:03:27 +00:00
}