commit 26/08/2025

This commit is contained in:
2025-08-26 08:24:31 +07:00
parent 0c84449b77
commit 4743b47a89
16 changed files with 534 additions and 77 deletions

View File

@@ -1,5 +1,6 @@
package database
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.withContext
@@ -29,6 +30,8 @@ class MariaDB (
var connected : Boolean = false
var SoundbankList : ArrayList<Soundbank> = ArrayList()
var MessagebankList : ArrayList<Messagebank> = ArrayList()
var LanguageLinkList : ArrayList<LanguageLink> = ArrayList()
var SchedulebankList : ArrayList<ScheduleBank> = ArrayList()
companion object {
fun ValidDate(date: String): Boolean {
@@ -41,6 +44,22 @@ class MariaDB (
val regex = Regex("""^\d{2}:\d{2}:\d{2}$""")
return regex.matches(time)
}
private val objectMapper = jacksonObjectMapper()
/**
* Convert SoundbankList, MessagebankList, LanguageLinkList, or SchedulebankList to a JSON String.
* @param list The ArrayList to convert to a String.
* @return A JSON String representation of the ArrayList.
*/
fun <T> ArrayListtoString(list: ArrayList<T>) : String{
return try {
objectMapper.writeValueAsString(list.toArray())
} catch (e: Exception) {
Logger.error("Error converting list to JSON: ${e.message}" as Any)
"[]"
}
}
}
init {
@@ -52,9 +71,9 @@ class MariaDB (
runBlocking {
withContext(Dispatchers.IO){
Reload_Messagebank()
Logger.info { "Messagebank loaded" }
Reload_Soundbank()
Logger.info { "Soundbank loaded" }
Reload_LanguageLink()
Reload_Schedulebank()
}
}
@@ -63,6 +82,8 @@ class MariaDB (
Logger.info { "Loading MariaDB completed" }
Logger.info { "Soundbank count: ${SoundbankList.size}" }
Logger.info { "Messagebank count: ${MessagebankList.size}" }
Logger.info { "LanguageLink count: ${LanguageLinkList.size}" }
Logger.info { "Schedulebank count: ${SchedulebankList.size}" }
} catch (e : Exception) {
@@ -165,6 +186,54 @@ class MariaDB (
consumer.accept(logList)
}
/**
* Reloads the ScheduleBank list from the database.
*/
private fun Reload_Schedulebank() {
SchedulebankList.clear()
try {
val statement = connection?.createStatement()
val resultSet = statement?.executeQuery("SELECT * FROM schedulebank")
while (resultSet?.next() == true) {
val schedulebank = ScheduleBank(
resultSet.getLong("index").toUInt(),
resultSet.getString("Description"),
resultSet.getString("Day"),
resultSet.getString("Time"),
resultSet.getString("Soundpath"),
resultSet.getInt("Repeat").toUByte(),
resultSet.getBoolean("Enable"),
resultSet.getString("BroadcastZones"),
resultSet.getString("Language")
)
SchedulebankList.add(schedulebank)
}
} catch (e : Exception) {
Logger.error("Error fetching schedulebanks: ${e.message}" as Any)
}
}
/**
* Reloads the language link list from the database.
*/
private fun Reload_LanguageLink() {
LanguageLinkList.clear()
try {
val statement = connection?.createStatement()
val resultSet = statement?.executeQuery("SELECT * FROM languagelink")
while (resultSet?.next() == true) {
val languageLink = LanguageLink(
resultSet.getLong("index").toUInt(),
resultSet.getString("TAG"),
resultSet.getString("Language")
)
LanguageLinkList.add(languageLink)
}
} catch (e : Exception) {
Logger.error("Error fetching language links: ${e.message}" as Any)
}
}
/**
* Reloads the soundbank list from the database.
*/