feat: support mysql and postgresql database

This commit is contained in:
2024-10-17 12:51:20 +08:00
parent 087d55ba28
commit 2ac27d29e7
9 files changed
+69 -8

No files matched your search

@@ -8,6 +8,7 @@
package cn.rtast.fancybot.util
import cn.rtast.fancybot.ROOT_PATH
import cn.rtast.fancybot.configManager
import cn.rtast.fancybot.db.ActionTable
import cn.rtast.fancybot.db.BlackListTable
import cn.rtast.fancybot.db.JrrpTable
@@ -15,13 +16,25 @@ import cn.rtast.fancybot.db.MinecraftAccessTokenTable
import cn.rtast.fancybot.db.NiuziBankTable
import cn.rtast.fancybot.db.NiuziTable
import cn.rtast.fancybot.db.RCONTable
import cn.rtast.fancybot.enums.DatabaseType
import kotlinx.coroutines.Dispatchers
import org.jetbrains.exposed.sql.Database
import org.jetbrains.exposed.sql.SchemaUtils
import org.jetbrains.exposed.sql.transactions.experimental.newSuspendedTransaction
suspend fun initDatabase() {
Database.connect("jdbc:sqlite:file:$ROOT_PATH/data.sqlite", "org.sqlite.JDBC")
val host = configManager.dbConfig.host
val port = configManager.dbConfig.port
val user = configManager.dbConfig.user
val password = configManager.dbConfig.password
val database = configManager.dbConfig.database
if (configManager.dbConfig.type == DatabaseType.MySQL) {
Database.connect("jdbc:mysql://${host}:${port}/$database", "com.mysql.cj.jdbc.Driver", user, password)
} else if (configManager.dbConfig.type == DatabaseType.PostgreSQL) {
Database.connect("jdbc:postgresql://$host:$port/$database", driver = "org.postgresql.Driver", user, password)
} else {
Database.connect("jdbc:sqlite:file:$ROOT_PATH/data.sqlite", "org.sqlite.JDBC")
}
suspendedTransaction {
SchemaUtils.createMissingTablesAndColumns(JrrpTable)
SchemaUtils.createMissingTablesAndColumns(NiuziBankTable)
@@ -49,4 +49,5 @@ class ConfigManager : JsonFileHandler<Config>("config.json") {
val apiRtastKey = config.apiRtastKey
val azureAppClientId = config.azureAppClientId
val youtubeDataApiKey = config.youtubeDataApiKey
val dbConfig = config.database
}