add publisher

This commit is contained in:
2022-08-19 22:45:28 +06:00
parent 9502accf65
commit b1eed5ca1c
5 changed files with 94 additions and 8 deletions

View File

@@ -1,12 +1,39 @@
package dev.inmo.plaguposter.posts
import dev.inmo.kslog.common.logger
import dev.inmo.kslog.common.w
import dev.inmo.plagubot.Plugin
import kotlinx.serialization.json.JsonObject
import dev.inmo.plaguposter.posts.exposed.ExposedPostsRepo
import dev.inmo.plaguposter.posts.repo.PostsRepo
import dev.inmo.plaguposter.posts.sending.PostPublisher
import dev.inmo.tgbotapi.types.ChatId
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.*
import org.jetbrains.exposed.sql.Database
import org.koin.core.module.Module
object Plugin : Plugin {
@Serializable
data class Config(
@SerialName("targetChat")
val targetChatId: ChatId,
@SerialName("cacheChat")
val cacheChatId: ChatId
)
override fun Module.setupDI(database: Database, params: JsonObject) {
TODO("Not yet implemented")
val configJson = params["posts"] ?: this@Plugin.let {
it.logger.w {
"Unable to load posts plugin due to absence of `posts` key in config"
}
return
}
single { get<Json>().decodeFromJsonElement(Config.serializer(), configJson) }
single<PostsRepo> { ExposedPostsRepo(database, get()) }
single {
val config = get<Config>()
PostPublisher(get(), get(), config.cacheChatId, config.targetChatId)
}
}
}

View File

@@ -4,12 +4,8 @@ import com.benasher44.uuid.uuid4
import dev.inmo.micro_utils.repos.KeyValuesRepo
import dev.inmo.micro_utils.repos.exposed.*
import dev.inmo.plaguposter.posts.models.*
import dev.inmo.plaguposter.posts.repo.PostsRepo
import dev.inmo.tgbotapi.types.ChatId
import org.jetbrains.exposed.sql.*
import org.jetbrains.exposed.sql.statements.InsertStatement
import org.jetbrains.exposed.sql.statements.UpdateStatement
import sun.security.pkcs.ContentInfo
internal class ExposedContentInfoRepo(
override val database: Database,