Skip to content

Commit

Permalink
Switch to kordex mongodb data adapter
Browse files Browse the repository at this point in the history
  • Loading branch information
NoComment1105 committed Aug 21, 2023
1 parent 6b01e94 commit ac27772
Show file tree
Hide file tree
Showing 16 changed files with 53 additions and 80 deletions.
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ dependencies {
implementation(libs.kord.extensions.phishing)
implementation(libs.kord.extensions.pluralkit)
implementation(libs.kord.extensions.unsafe)
implementation(libs.kord.extensions.mongodb)

implementation(libs.kotlin.stdlib)

Expand All @@ -64,7 +65,6 @@ dependencies {
implementation(libs.github.api)

// KMongo
//implementation(libs.kmongo)
implementation(libs.mongo.driver)

// Cozy's welcome module
Expand Down
6 changes: 3 additions & 3 deletions libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ grgit = "5.2.0"
blossom = "1.3.1"

# Libraries
kord-extensions = "1.5.9-20230809.104126-1"
#kord-extensions = "1.5.9-20230820.204324-8"
kord-extensions = "1.5.9-SNAPSHOT"
logging = "5.1.0"
logback = "1.4.9"
github-api = "1.315"
kmongo = "4.9.0"
mongo-driver = "4.10.1"
cozy-welcome = "1.0.1-SNAPSHOT"
dma = "v0.2.1"
Expand All @@ -23,11 +23,11 @@ kord-extensions-core = { module = "com.kotlindiscord.kord.extensions:kord-extens
kord-extensions-phishing = { module = "com.kotlindiscord.kord.extensions:extra-phishing", version.ref = "kord-extensions" }
kord-extensions-pluralkit = { module = "com.kotlindiscord.kord.extensions:extra-pluralkit", version.ref = "kord-extensions"}
kord-extensions-unsafe = { module = "com.kotlindiscord.kord.extensions:unsafe", version.ref = "kord-extensions"}
kord-extensions-mongodb = { module = "com.kotlindiscord.kord.extensions:adapter-mongodb", version.ref = "kord-extensions" }
kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib" }
logback = { module = "ch.qos.logback:logback-classic", version.ref = "logback" }
logging = { module = "io.github.oshai:kotlin-logging", version.ref = "logging" }
github-api = { module = "org.kohsuke:github-api", version.ref = "github-api" }
kmongo = { module = "org.litote.kmongo:kmongo-coroutine-serialization", version.ref = "kmongo" }
mongo-driver = { module = "org.mongodb:mongodb-driver-kotlin-coroutine", version.ref = "mongo-driver" }
detekt = { module = "io.gitlab.arturbosch.detekt:detekt-formatting", version.ref = "detekt"}
cozy-welcome = {module = "org.quiltmc.community:module-welcome", version.ref = "cozy-welcome"}
Expand Down
8 changes: 5 additions & 3 deletions src/main/kotlin/org/hyacinthbots/lilybot/LilyBot.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
package org.hyacinthbots.lilybot

import com.kotlindiscord.kord.extensions.ExtensibleBot
import com.kotlindiscord.kord.extensions.adapters.mongodb.mongoDB
import com.kotlindiscord.kord.extensions.checks.hasPermission
import com.kotlindiscord.kord.extensions.modules.extra.phishing.DetectionAction
import com.kotlindiscord.kord.extensions.modules.extra.phishing.extPhishing
Expand All @@ -15,7 +16,7 @@ import org.hyacinthbots.docgenerator.docsGenerator
import org.hyacinthbots.docgenerator.enums.CommandTypes
import org.hyacinthbots.docgenerator.enums.SupportedFileFormat
import org.hyacinthbots.lilybot.database.collections.WelcomeChannelCollection
import org.hyacinthbots.lilybot.database.storage.MongoDBDataAdapter
import org.hyacinthbots.lilybot.database.storage.LilyMongoDBDataAdapter
import org.hyacinthbots.lilybot.extensions.config.Config
import org.hyacinthbots.lilybot.extensions.config.ConfigOptions
import org.hyacinthbots.lilybot.extensions.config.GuildLogging
Expand Down Expand Up @@ -59,8 +60,9 @@ val docFile = Path("./docs/commands.md")

suspend fun main() {
val bot = ExtensibleBot(BOT_TOKEN) {
database(false)
dataAdapter(::MongoDBDataAdapter)
database(true)
dataAdapter(::LilyMongoDBDataAdapter)
mongoDB()

members {
lockMemberRequests = true // Collect members one at a time to avoid hitting rate limits
Expand Down
9 changes: 5 additions & 4 deletions src/main/kotlin/org/hyacinthbots/lilybot/database/Database.kt
Original file line number Diff line number Diff line change
@@ -1,20 +1,19 @@
package org.hyacinthbots.lilybot.database

import com.kotlindiscord.kord.extensions.adapters.mongodb.kordExCodecRegistry
import com.mongodb.ConnectionString
import com.mongodb.MongoClientSettings
import com.mongodb.kotlin.client.coroutine.MongoClient
import org.bson.UuidRepresentation
import org.bson.codecs.configuration.CodecRegistries
import org.hyacinthbots.lilybot.database.codec.DateTimePeriodCodec
import org.hyacinthbots.lilybot.database.codec.InstantCodec
import org.hyacinthbots.lilybot.database.codec.SnowflakeCodec
import org.hyacinthbots.lilybot.database.codec.StorageTypeCodec
import org.hyacinthbots.lilybot.database.migrations.Migrator
import org.hyacinthbots.lilybot.utils.MONGO_URI

class Database {
private val codecRegistries = CodecRegistries.fromRegistries(
CodecRegistries.fromCodecs(InstantCodec(), SnowflakeCodec(), StorageTypeCodec(), DateTimePeriodCodec()),
CodecRegistries.fromCodecs(DateTimePeriodCodec()),
kordExCodecRegistry,
MongoClientSettings.getDefaultCodecRegistry()
)

Expand All @@ -34,6 +33,8 @@ class Database {
/** The database for storing per guild configuration data. */
val configDatabase get() = client.getDatabase("LilyBotConfig")

val tempKordExDatabase get() = client.getDatabase("kordex-data")

/**
* Runs the migrations for both databases.
*
Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import org.hyacinthbots.lilybot.database.migrations.config.configV3
import org.hyacinthbots.lilybot.database.migrations.config.configV4
import org.hyacinthbots.lilybot.database.migrations.config.configV5
import org.hyacinthbots.lilybot.database.migrations.config.configV6
import org.hyacinthbots.lilybot.database.migrations.config.configV7
import org.hyacinthbots.lilybot.database.migrations.main.mainV1
import org.hyacinthbots.lilybot.database.migrations.main.mainV2
import org.hyacinthbots.lilybot.database.migrations.main.mainV3
Expand Down Expand Up @@ -121,8 +122,9 @@ object Migrator : KordExKoinComponent {
4 -> ::configV4
5 -> ::configV5
6 -> ::configV6
7 -> ::configV7
else -> break
}(db.configDatabase)
}(db.configDatabase, db.tempKordExDatabase)

logger.info { "Migrated config database to version $nextVersion" }
} catch (t: Throwable) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ import com.mongodb.client.model.Updates
import com.mongodb.kotlin.client.coroutine.MongoDatabase
import org.hyacinthbots.lilybot.database.entities.LoggingConfigData

suspend fun configV1(configDb: MongoDatabase) {
@Suppress("UnusedPrivateMember", "UNUSED_PARAMETER")
suspend fun configV1(configDb: MongoDatabase, tempKeDb: MongoDatabase) {
with(configDb.getCollection<LoggingConfigData>("loggingConfigData")) {
updateMany(
Filters.exists(LoggingConfigData::enableMessageEditLogs.name, false),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ import com.mongodb.client.model.Updates
import com.mongodb.kotlin.client.coroutine.MongoDatabase
import org.hyacinthbots.lilybot.database.entities.ModerationConfigData

suspend fun configV2(db: MongoDatabase) {
@Suppress("UnusedPrivateMember", "UNUSED_PARAMETER")
suspend fun configV2(db: MongoDatabase, tempKeDb: MongoDatabase) {
with(db.getCollection<ModerationConfigData>("moderationConfigData")) {
updateMany(
Filters.exists(ModerationConfigData::quickTimeoutLength.name, false),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ import com.mongodb.client.model.Updates
import com.mongodb.kotlin.client.coroutine.MongoDatabase
import org.hyacinthbots.lilybot.database.entities.LoggingConfigData

suspend fun configV3(db: MongoDatabase) {
@Suppress("UnusedPrivateMember", "UNUSED_PARAMETER")
suspend fun configV3(db: MongoDatabase, tempKeDb: MongoDatabase) {
with(db.getCollection<LoggingConfigData>("loggingConfigData")) {
updateMany(
Filters.exists(LoggingConfigData::enablePublicMemberLogs.name, false),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package org.hyacinthbots.lilybot.database.migrations.config
import com.mongodb.kotlin.client.coroutine.MongoDatabase

@Suppress("UnusedPrivateMember", "UNUSED_PARAMETER", "RedundantSuspendModifier")
suspend fun configV4(db: MongoDatabase) {
suspend fun configV4(db: MongoDatabase, tempKeDb: MongoDatabase) {
// Support config has been removed.
// if (db.getCollection<SupportConfigData>().find().toList().isEmpty()) {
// db.dropCollection("supportConfigData")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ package org.hyacinthbots.lilybot.database.migrations.config

import com.mongodb.kotlin.client.coroutine.MongoDatabase

suspend fun configV5(db: MongoDatabase) {
suspend fun configV5(db: MongoDatabase, tempKeDb: MongoDatabase) {
// val collection = db.getCollection<UtilityConfigDataOld>("utilityConfigData")
// val oldConfigs = collection.find().toList()
// val newConfigs = mutableListOf<UtilityConfigData>()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ import com.mongodb.client.model.Updates
import com.mongodb.kotlin.client.coroutine.MongoDatabase
import org.hyacinthbots.lilybot.database.entities.ModerationConfigData

suspend fun configV6(db: MongoDatabase) {
@Suppress("UnusedPrivateMember", "UNUSED_PARAMETER")
suspend fun configV6(db: MongoDatabase, tempKeDb: MongoDatabase) {
with(db.getCollection<ModerationConfigData>("moderationConfigData")) {
updateMany(
Filters.exists(ModerationConfigData::banDmMessage.name, false),
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package org.hyacinthbots.lilybot.database.migrations.config

import com.mongodb.kotlin.client.coroutine.MongoDatabase
import kotlinx.coroutines.flow.toList
import org.hyacinthbots.lilybot.database.entities.AdaptedData

suspend fun configV7(db: MongoDatabase, tempKeDb: MongoDatabase) {
// Done twice due to updates in the data-adapter
with(db.getCollection<AdaptedData>("ext-pluralkit")) {
val data = find().toList()

tempKeDb.createCollection("data-ext-pluralkit") // create new with correct name
tempKeDb.getCollection<AdaptedData>("data-ext-pluralkit").insertMany(data) // add the data
drop() // drop old
}

with(db.getCollection<AdaptedData>("data-ext-pluralkit")) {
val data = find().toList()

tempKeDb.createCollection("data-ext-pluralkit") // create new
tempKeDb.getCollection<AdaptedData>("data-ext-pluralkit").insertMany(data) // add the data
drop() // drop old
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ import org.hyacinthbots.lilybot.database.entities.AdaptedData
import org.koin.core.component.inject

@OptIn(InternalSerializationApi::class)
class MongoDBDataAdapter : DataAdapter<String>(), KordExKoinComponent {
@Deprecated("Replaced with KordEx data adapter", level = DeprecationLevel.WARNING)
class LilyMongoDBDataAdapter : DataAdapter<String>(), KordExKoinComponent {
private val database: Database by inject()
private val collectionCache: MutableMap<String, MongoCollection<AdaptedData>> = mutableMapOf()

Expand Down

0 comments on commit ac27772

Please sign in to comment.