mirror of
https://github.com/InsanusMokrassar/TelegramBotApiLibraries.git
synced 2025-09-16 13:49:29 +00:00
rework of plagubot part of admins plugin
This commit is contained in:
@@ -28,7 +28,7 @@ private class SetChatAdminsRepoAction(
|
||||
override val toReturn: Continuation<Unit>
|
||||
) : RepoActions<Unit>()
|
||||
|
||||
class DefaultAdminsCacheAPIRepo(
|
||||
class DefaultAdminsCacheAPIRepoImpl(
|
||||
private val adminsRepo: KeyValuesRepo<ChatId, AdministratorChatMember>,
|
||||
private val updatesRepo: KeyValueRepo<ChatId, MilliSeconds>,
|
||||
private val scope: CoroutineScope
|
||||
@@ -60,3 +60,9 @@ class DefaultAdminsCacheAPIRepo(
|
||||
actor.trySend(GetUpdateDateTimeRepoAction(chatId, it))
|
||||
}
|
||||
}
|
||||
|
||||
fun DefaultAdminsCacheAPIRepo(
|
||||
adminsRepo: KeyValuesRepo<ChatId, AdministratorChatMember>,
|
||||
updatesRepo: KeyValueRepo<ChatId, MilliSeconds>,
|
||||
scope: CoroutineScope
|
||||
) = DefaultAdminsCacheAPIRepoImpl(adminsRepo, updatesRepo, scope)
|
||||
|
@@ -5,20 +5,18 @@ import dev.inmo.micro_utils.repos.exposed.onetomany.ExposedKeyValuesRepo
|
||||
import dev.inmo.micro_utils.repos.mappers.withMapper
|
||||
import dev.inmo.tgbotapi.bot.TelegramBot
|
||||
import dev.inmo.tgbotapi.extensions.behaviour_builder.BehaviourContext
|
||||
import dev.inmo.tgbotapi.libraries.cache.admins.micro_utils.DefaultAdminsCacheAPIRepo
|
||||
import dev.inmo.tgbotapi.libraries.cache.admins.micro_utils.DefaultAdminsCacheAPIRepoImpl
|
||||
import dev.inmo.tgbotapi.libraries.cache.admins.micro_utils.DynamicAdminsCacheSettingsAPI
|
||||
import dev.inmo.tgbotapi.types.*
|
||||
import dev.inmo.tgbotapi.types.chat.member.*
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.serialization.*
|
||||
import kotlinx.serialization.cbor.Cbor
|
||||
import kotlinx.serialization.json.Json
|
||||
import kotlinx.serialization.modules.SerializersModule
|
||||
import kotlinx.serialization.modules.polymorphic
|
||||
import org.jetbrains.exposed.sql.Database
|
||||
import org.jetbrains.exposed.sql.statements.api.ExposedBlob
|
||||
|
||||
private val serializationFormat = Json {
|
||||
val telegramAdminsSerializationFormat = Json {
|
||||
ignoreUnknownKeys = true
|
||||
serializersModule = SerializersModule {
|
||||
polymorphic(AdministratorChatMember::class) {
|
||||
@@ -35,7 +33,7 @@ fun AdminsCacheAPI(
|
||||
scope: CoroutineScope
|
||||
) : AdminsCacheAPI = DefaultAdminsCacheAPI(
|
||||
bot,
|
||||
DefaultAdminsCacheAPIRepo(
|
||||
DefaultAdminsCacheAPIRepoImpl(
|
||||
ExposedKeyValuesRepo(
|
||||
database,
|
||||
{ long("chatId") },
|
||||
@@ -43,9 +41,9 @@ fun AdminsCacheAPI(
|
||||
"AdminsTable"
|
||||
).withMapper<ChatId, AdministratorChatMember, Identifier, String>(
|
||||
keyFromToTo = { chatId },
|
||||
valueFromToTo = { serializationFormat.encodeToString(this) },
|
||||
valueFromToTo = { telegramAdminsSerializationFormat.encodeToString(this) },
|
||||
keyToToFrom = { toChatId() },
|
||||
valueToToFrom = { serializationFormat.decodeFromString(this) }
|
||||
valueToToFrom = { telegramAdminsSerializationFormat.decodeFromString(this) }
|
||||
),
|
||||
ExposedKeyValueRepo(
|
||||
database,
|
||||
@@ -68,9 +66,9 @@ fun AdminsCacheAPI(
|
||||
"DynamicAdminsCacheSettingsAPI"
|
||||
).withMapper<ChatId, AdminsCacheSettings, Identifier, String>(
|
||||
keyFromToTo = { chatId },
|
||||
valueFromToTo = { serializationFormat.encodeToString(this) },
|
||||
valueFromToTo = { telegramAdminsSerializationFormat.encodeToString(this) },
|
||||
keyToToFrom = { toChatId() },
|
||||
valueToToFrom = { serializationFormat.decodeFromString(this) }
|
||||
valueToToFrom = { telegramAdminsSerializationFormat.decodeFromString(this) }
|
||||
),
|
||||
scope
|
||||
)
|
||||
|
Reference in New Issue
Block a user