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() 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!"))) } }