import java.sql.Statement
object Database {
+ const val DB_VERSION = 1
val dataSource: HikariDataSource
+
init {
val config = HikariConfig()
config.jdbcUrl = "jdbc:h2:~/.rssreader/feeds"
}
private fun ensureSchema(conn: Connection) {
- var tableExists = false
+ var dbVersion = 0
conn.createStatement().use { stmt ->
- stmt.executeQuery("SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'FEEDCOLLECTIONS'").use { rs ->
- if (rs.next()) {
- tableExists = rs.getInt(1) > 0
+ try {
+ stmt.executeQuery("select version from db_version").use { rs ->
+ if (rs.next()) {
+ dbVersion = rs.getInt(1)
+ }
}
- }
+ } catch (e: Exception) {}
}
- if (!tableExists) {
+ if (dbVersion == 0) {
println("Database empty: creating tables")
conn.createStatement().use { createStmt ->
+ createStmt.addBatch("""
+ CREATE TABLE db_version (
+ version INT NOT NULL
+ )
+ """.trimIndent())
+ createStmt.addBatch("insert into db_version(version) values (${DB_VERSION})")
+
createStmt.addBatch("""
CREATE TABLE groups (
group_id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,