package org.opendc.common.utils import com.fasterxml.jackson.dataformat.toml.TomlMapper import java.sql.Connection import java.sql.DriverManager import java.sql.SQLException import java.util.Properties /** * Represents the Postgresql database. * On setup cleans the entire database. * * @author Mateusz Kwiatkowski * * @see * https://docs.oracle.com/en/java/javase/21/docs/api/java.sql/java/sql/DriverManager.html */ @Suppress("DEPRECATION") public class PostgresqlDB { private var properties = Properties() private var connection : Connection? = null init { try { properties = TomlMapper().readerFor(Properties().javaClass) .readValue(PostgresqlDB::class.java.getResource("/database.toml")) connection = DriverManager.getConnection( properties.getProperty("address").asJdbc(properties.getProperty("database")), properties.getProperty("user"), properties.getProperty("password")) clear() } catch (e: SQLException) { print("${e.message}") } } public fun clear(){ val DELETE_ALL_TABLES = """ DROP SCHEMA public CASCADE; CREATE SCHEMA public; """.trimIndent() try { val st = connection?.createStatement() st?.executeQuery(DELETE_ALL_TABLES) } catch (e: SQLException){ println("${e.message}") } } private fun String.asJdbc(database : String) : String { return "jdbc:postgresql://$this/$database" } }