Files
KekWar/CLI/src/commands/database/ResetCommand.kt
T
Chaoscaot 029249c2b0 Fix Database Reset
Signed-off-by: Chaoscaot <max@maxsp.de>
2026-07-05 13:23:52 +02:00

44 lines
1.3 KiB
Kotlin

package de.steamwar.commands.database
import com.github.ajalt.clikt.core.CliktCommand
import com.github.ajalt.clikt.core.CliktError
import com.github.ajalt.clikt.core.requireObject
import com.github.ajalt.mordant.rendering.TextColors
import com.github.ajalt.mordant.rendering.TextStyles
import de.steamwar.db.Database
import de.steamwar.db.execute
import de.steamwar.db.useDb
import java.io.File
class ResetCommand : CliktCommand() {
val db by requireObject<Database>()
override fun run() =
useDb {
val schemaFile = File("/var/Schema.sql")
if (!schemaFile.exists()) {
throw CliktError("Schema file not found!")
}
val schema = schemaFile.readText()
execute("SET FOREIGN_KEY_CHECKS=0;") { }
val tables = execute("SHOW TABLES;") { it.getString(1) }
for (table in tables) {
execute("DROP TABLE IF EXISTS `${table.replace("`", "``")}`;") { }
}
execute(schema) { }
val seed = javaClass.getResource("/db/reset-seed.sql")
?: throw CliktError("Reset seed file not found!")
execute(seed.readText()) { }
execute("SET FOREIGN_KEY_CHECKS=1;") { }
echo(TextColors.brightGreen(TextStyles.bold("Database reset!")))
}
}