mirror of
https://github.com/InsanusMokrassar/TelegramBotApiLibraries.git
synced 2024-06-01 15:05:13 +00:00
65 lines
2.3 KiB
Kotlin
65 lines
2.3 KiB
Kotlin
|
package dev.inmo.tgbotapi.libraries.cache.admins
|
||
|
|
||
|
import dev.inmo.micro_utils.repos.exposed.keyvalue.ExposedKeyValueRepo
|
||
|
import dev.inmo.micro_utils.repos.exposed.onetomany.ExposedOneToManyKeyValueRepo
|
||
|
import dev.inmo.micro_utils.repos.mappers.withMapper
|
||
|
import dev.inmo.tgbotapi.bot.TelegramBot
|
||
|
import dev.inmo.tgbotapi.libraries.cache.admins.micro_utils.DefaultAdminsCacheAPIRepo
|
||
|
import dev.inmo.tgbotapi.libraries.cache.admins.micro_utils.DynamicAdminsCacheSettingsAPI
|
||
|
import dev.inmo.tgbotapi.types.toChatId
|
||
|
import kotlinx.coroutines.CoroutineScope
|
||
|
import kotlinx.serialization.cbor.Cbor
|
||
|
import kotlinx.serialization.decodeFromByteArray
|
||
|
import kotlinx.serialization.encodeToByteArray
|
||
|
import org.jetbrains.exposed.sql.Database
|
||
|
import org.jetbrains.exposed.sql.statements.api.ExposedBlob
|
||
|
|
||
|
private val serializationFormat = Cbor
|
||
|
|
||
|
fun AdminsCacheAPI(
|
||
|
bot: TelegramBot,
|
||
|
database: Database,
|
||
|
scope: CoroutineScope,
|
||
|
repo: dev.inmo.tgbotapi.libraries.cache.admins.DefaultAdminsCacheAPIRepo = DefaultAdminsCacheAPIRepo(
|
||
|
ExposedOneToManyKeyValueRepo(
|
||
|
database,
|
||
|
{ long("chatId") },
|
||
|
{ blob("member") },
|
||
|
"AdminsTable"
|
||
|
).withMapper(
|
||
|
keyFromToTo = { chatId },
|
||
|
valueFromToTo = { ExposedBlob(serializationFormat.encodeToByteArray(this)) },
|
||
|
keyToToFrom = { toChatId() },
|
||
|
valueToToFrom = { serializationFormat.decodeFromByteArray(bytes) }
|
||
|
),
|
||
|
ExposedKeyValueRepo(
|
||
|
database,
|
||
|
{ long("chatId") },
|
||
|
{ long("datetime") },
|
||
|
"AdminsUpdatesTimesTable"
|
||
|
).withMapper(
|
||
|
keyFromToTo = { chatId },
|
||
|
keyToToFrom = { toChatId() }
|
||
|
),
|
||
|
scope
|
||
|
),
|
||
|
settingsAPI: AdminsCacheSettingsAPI = DynamicAdminsCacheSettingsAPI(
|
||
|
ExposedKeyValueRepo(
|
||
|
database,
|
||
|
{ long("chatId") },
|
||
|
{ blob("settings") },
|
||
|
"DynamicAdminsCacheSettingsAPI"
|
||
|
).withMapper(
|
||
|
keyFromToTo = { chatId },
|
||
|
valueFromToTo = { ExposedBlob(serializationFormat.encodeToByteArray(this)) },
|
||
|
keyToToFrom = { toChatId() },
|
||
|
valueToToFrom = { serializationFormat.decodeFromByteArray(bytes) }
|
||
|
),
|
||
|
scope
|
||
|
)
|
||
|
) : AdminsCacheAPI = DefaultAdminsCacheAPI(
|
||
|
bot,
|
||
|
repo,
|
||
|
settingsAPI
|
||
|
)
|