inluding sdi

This commit is contained in:
2021-02-17 01:21:41 +06:00
parent a2b3fe57ac
commit 2baed760f7
8 changed files with 34 additions and 9 deletions

View File

@@ -1,7 +1,7 @@
package dev.inmo.plagubot
import dev.inmo.micro_utils.coroutines.safelyWithoutExceptions
import dev.inmo.plagubot.config.Config
import dev.inmo.plagubot.config.*
import dev.inmo.plagubot.config.configSerialFormat
import dev.inmo.tgbotapi.bot.Ktor.telegramBot
import dev.inmo.tgbotapi.extensions.api.bot.setMyCommands
@@ -18,9 +18,11 @@ suspend inline fun initPlaguBot(
) {
val bot = telegramBot(config.botToken)
val paramsMap = config.params ?.toMap() ?: emptyMap()
val database = config.params ?.database ?: config.database.database
bot.buildBehaviour(scope) {
val commands = config.plugins.flatMap {
it.apply { invoke(config.database.database) }
it.apply { invoke(database, paramsMap) }
it.getCommands()
}.let {
val futureUnavailable = it.drop(botCommandsLimit.last)

View File

@@ -2,6 +2,7 @@ package dev.inmo.plagubot.config
import com.github.matfax.klassindex.KlassIndex
import dev.inmo.plagubot.Plugin
import dev.inmo.sdi.Module
import kotlinx.serialization.*
import kotlinx.serialization.json.Json
import kotlinx.serialization.modules.*
@@ -37,6 +38,7 @@ internal val configSerialFormat: StringFormat
@Serializable
data class Config(
val plugins: List<Plugin>,
val database: DatabaseConfig,
val botToken: String
val database: DatabaseConfig = DatabaseConfig(),
val botToken: String,
val params: Module? = null
)

View File

@@ -1,5 +1,6 @@
package dev.inmo.plagubot.config
import dev.inmo.sdi.SDIIncluded
import kotlinx.serialization.Serializable
import kotlinx.serialization.Transient
import org.jetbrains.exposed.sql.Database
@@ -7,7 +8,12 @@ import org.jetbrains.exposed.sql.transactions.transactionManager
import org.sqlite.JDBC
import java.sql.Connection
const val defaultDatabaseParamsName = "defaultDatabase"
inline val Map<String, Any>.database: Database?
get() = (get(defaultDatabaseParamsName) as? DatabaseConfig) ?.database
@Serializable
@SDIIncluded
data class DatabaseConfig(
val url: String = "jdbc:sqlite:file:test?mode=memory&cache=shared",
val driver: String = JDBC::class.qualifiedName!!,