feat: support mysql and postgresql database
This commit is contained in:
9 files changed
+69
-8
No files matched your search
@@ -23,11 +23,11 @@ import cn.rtast.fancybot.commands.misc.JrrpCommand
|
||||
import cn.rtast.fancybot.commands.niuzi.NiuziRedeemCommand
|
||||
import cn.rtast.fancybot.commands.misc.ShortLinkCommand
|
||||
import cn.rtast.fancybot.entity.Config
|
||||
import cn.rtast.fancybot.enums.DatabaseType
|
||||
import cn.rtast.fancybot.enums.ImageBedType
|
||||
import cn.rtast.fancybot.enums.ImageType
|
||||
import cn.rtast.fancybot.enums.WSType
|
||||
import cn.rtast.fancybot.items.*
|
||||
import cn.rtast.fancybot.util.Logger
|
||||
import cn.rtast.fancybot.util.file.BlackListManager
|
||||
import cn.rtast.fancybot.util.file.ConfigManager
|
||||
import cn.rtast.fancybot.util.file.NiuziBankManager
|
||||
@@ -50,6 +50,14 @@ const val API_RTAST_URL = "https://api.rtast.cn"
|
||||
const val PBI_API_URL = "https://pbi.us.kg"
|
||||
|
||||
val DEFAULT_CONFIG = Config(
|
||||
database = Config.Database(
|
||||
DatabaseType.SQLite,
|
||||
"127.0.0.1",
|
||||
3306,
|
||||
"root",
|
||||
"114514",
|
||||
"fancybot"
|
||||
),
|
||||
ncmAPI = "https://ncm.rtast.cn",
|
||||
wsAddress = "ws://127.0.0.1",
|
||||
wsType = WSType.Client,
|
||||
|
||||
@@ -10,10 +10,10 @@ package cn.rtast.fancybot.db
|
||||
import org.jetbrains.exposed.sql.Table
|
||||
|
||||
object ActionTable : Table("action") {
|
||||
val id = integer("id").autoIncrement().nullable()
|
||||
val action = varchar("action", 255).nullable()
|
||||
val timestamp = long("timestamp").nullable()
|
||||
val triggerId = long("trigger_id").nullable()
|
||||
val result = varchar("result", 255)
|
||||
val id = integer("id").autoIncrement()
|
||||
val action = varchar("action", 255)
|
||||
val timestamp = long("timestamp")
|
||||
val triggerId = long("trigger_id")
|
||||
val result = text("result")
|
||||
override val primaryKey = PrimaryKey(id)
|
||||
}
|
||||
@@ -7,11 +7,13 @@
|
||||
|
||||
package cn.rtast.fancybot.entity
|
||||
|
||||
import cn.rtast.fancybot.enums.DatabaseType
|
||||
import cn.rtast.fancybot.enums.ImageBedType
|
||||
import cn.rtast.fancybot.enums.ImageType
|
||||
import cn.rtast.fancybot.enums.WSType
|
||||
|
||||
data class Config(
|
||||
val database: Database,
|
||||
val ncmAPI: String,
|
||||
val wsType: WSType,
|
||||
val wsAddress: String,
|
||||
@@ -49,4 +51,13 @@ data class Config(
|
||||
val apiRtastKey: String,
|
||||
val azureAppClientId: String,
|
||||
val youtubeDataApiKey: String,
|
||||
)
|
||||
) {
|
||||
data class Database(
|
||||
val type: DatabaseType,
|
||||
val host: String,
|
||||
val port: Int,
|
||||
val user: String,
|
||||
val password: String,
|
||||
val database: String,
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
/*
|
||||
* Copyright © 2024 RTAkland
|
||||
* Author: RTAkland
|
||||
* Date: 2024/10/17
|
||||
*/
|
||||
|
||||
|
||||
package cn.rtast.fancybot.enums
|
||||
|
||||
enum class DatabaseType {
|
||||
SQLite, MySQL, PostgreSQL
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user