mirror of
https://github.com/InsanusMokrassar/CaptchaPlaguBotPlugin.git
synced 2025-10-27 09:30:09 +00:00
experimentally add CaptchaProvider
This commit is contained in:
@@ -1,22 +1,26 @@
|
||||
package dev.inmo.plagubot.plugins.captcha.db
|
||||
|
||||
import dev.inmo.micro_utils.repos.exposed.*
|
||||
import dev.inmo.micro_utils.repos.exposed.keyvalue.ExposedKeyValueRepo
|
||||
import dev.inmo.plagubot.plugins.captcha.provider.CaptchaProvider
|
||||
import dev.inmo.plagubot.plugins.captcha.settings.*
|
||||
import dev.inmo.tgbotapi.types.ChatId
|
||||
import dev.inmo.tgbotapi.types.toChatId
|
||||
import kotlinx.serialization.json.Json
|
||||
import org.jetbrains.exposed.sql.*
|
||||
import org.jetbrains.exposed.sql.statements.InsertStatement
|
||||
import org.jetbrains.exposed.sql.statements.UpdateStatement
|
||||
|
||||
private val captchaProviderSerialFormat = Json {
|
||||
ignoreUnknownKeys = true
|
||||
}
|
||||
|
||||
class CaptchaChatsSettingsRepo(
|
||||
override val database: Database
|
||||
) : AbstractExposedCRUDRepo<ChatSettings, ChatId, ChatSettings>(
|
||||
tableName = "CaptchaChatsSettingsRepo"
|
||||
) {
|
||||
private val chatIdColumn = long("chatId")
|
||||
private val checkTimeSecondsColumn = integer("checkTime")
|
||||
private val solveCaptchaTextColumn = text("solveCaptchaText")
|
||||
private val captchaProviderColumn = text("captchaProvider")
|
||||
private val autoRemoveCommandsColumn = bool("autoRemoveCommands")
|
||||
|
||||
override val primaryKey = PrimaryKey(chatIdColumn)
|
||||
@@ -29,23 +33,20 @@ class CaptchaChatsSettingsRepo(
|
||||
|
||||
override fun insert(value: ChatSettings, it: InsertStatement<Number>) {
|
||||
it[chatIdColumn] = value.chatId.chatId
|
||||
it[checkTimeSecondsColumn] = value.checkTime
|
||||
it[solveCaptchaTextColumn] = value.captchaText
|
||||
it[captchaProviderColumn] = captchaProviderSerialFormat.encodeToString(CaptchaProvider.serializer(), value.captchaProvider)
|
||||
it[autoRemoveCommandsColumn] = value.autoRemoveCommands
|
||||
}
|
||||
|
||||
override fun update(id: ChatId, value: ChatSettings, it: UpdateStatement) {
|
||||
if (id.chatId == value.chatId.chatId) {
|
||||
it[checkTimeSecondsColumn] = value.checkTime
|
||||
it[solveCaptchaTextColumn] = value.captchaText
|
||||
it[captchaProviderColumn] = captchaProviderSerialFormat.encodeToString(CaptchaProvider.serializer(), value.captchaProvider)
|
||||
it[autoRemoveCommandsColumn] = value.autoRemoveCommands
|
||||
}
|
||||
}
|
||||
|
||||
override fun InsertStatement<Number>.asObject(value: ChatSettings): ChatSettings = ChatSettings(
|
||||
get(chatIdColumn).toChatId(),
|
||||
get(checkTimeSecondsColumn),
|
||||
get(solveCaptchaTextColumn),
|
||||
captchaProviderSerialFormat.decodeFromString(CaptchaProvider.serializer(), get(captchaProviderColumn)),
|
||||
get(autoRemoveCommandsColumn)
|
||||
)
|
||||
|
||||
@@ -53,8 +54,7 @@ class CaptchaChatsSettingsRepo(
|
||||
override val ResultRow.asObject: ChatSettings
|
||||
get() = ChatSettings(
|
||||
get(chatIdColumn).toChatId(),
|
||||
get(checkTimeSecondsColumn),
|
||||
get(solveCaptchaTextColumn),
|
||||
captchaProviderSerialFormat.decodeFromString(CaptchaProvider.serializer(), get(captchaProviderColumn)),
|
||||
get(autoRemoveCommandsColumn)
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user