forked from SteamWar/SteamWar
44 lines
1.3 KiB
Kotlin
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!")))
|
|
}
|
|
}
|