Coverage Summary for Class: DatabaseImplKt (com.vsevolodganin.clicktrack.multiplatform)

Class Class, % Method, % Branch, % Line, % Instruction, %
DatabaseImplKt 0% (0/1) 0% (0/2) 0% (0/2) 0% (0/7)


 package com.vsevolodganin.clicktrack.multiplatform
 
 import app.cash.sqldelight.TransacterImpl
 import app.cash.sqldelight.db.AfterVersion
 import app.cash.sqldelight.db.QueryResult
 import app.cash.sqldelight.db.SqlDriver
 import app.cash.sqldelight.db.SqlSchema
 import com.vsevolodganin.clicktrack.Database
 import com.vsevolodganin.clicktrack.storage.SqlClickSoundsQueries
 import com.vsevolodganin.clicktrack.storage.SqlClickTrackQueries
 import kotlin.Long
 import kotlin.Unit
 import kotlin.reflect.KClass
 
 internal val KClass<Database>.schema: SqlSchema<QueryResult.Value<Unit>>
   get() = DatabaseImpl.Schema
 
 internal fun KClass<Database>.newInstance(driver: SqlDriver): Database = DatabaseImpl(driver)
 
 private class DatabaseImpl(
   driver: SqlDriver,
 ) : TransacterImpl(driver),
     Database {
   override val sqlClickSoundsQueries: SqlClickSoundsQueries = SqlClickSoundsQueries(driver)
 
   override val sqlClickTrackQueries: SqlClickTrackQueries = SqlClickTrackQueries(driver)
 
   public object Schema : SqlSchema<QueryResult.Value<Unit>> {
     override val version: Long
       get() = 3
 
     override fun create(driver: SqlDriver): QueryResult.Value<Unit> {
       driver.execute(null, """
           |CREATE TABLE ClickSounds (
           |    id INTEGER NOT NULL PRIMARY KEY,
           |    serializedValue TEXT NOT NULL
           |)
           """.trimMargin(), 0)
       driver.execute(null, """
           |CREATE TABLE ClickTrack (
           |    id INTEGER NOT NULL PRIMARY KEY,
           |    name TEXT NOT NULL,
           |    serializedValue TEXT NOT NULL,
           |    ordinal INTEGER NOT NULL DEFAULT 0
           |)
           """.trimMargin(), 0)
       return QueryResult.Unit
     }
 
     private fun migrateInternal(
       driver: SqlDriver,
       oldVersion: Long,
       newVersion: Long,
     ): QueryResult.Value<Unit> {
       if (oldVersion <= 1 && newVersion > 1) {
         driver.execute(null, """
             |CREATE TABLE ClickSounds (
             |    id INTEGER NOT NULL PRIMARY KEY,
             |    serializedValue TEXT NOT NULL
             |)
             """.trimMargin(), 0)
       }
       if (oldVersion <= 2 && newVersion > 2) {
         driver.execute(null, "ALTER TABLE ClickTrack ADD ordinal INTEGER NOT NULL DEFAULT 0", 0)
       }
       return QueryResult.Unit
     }
 
     override fun migrate(
       driver: SqlDriver,
       oldVersion: Long,
       newVersion: Long,
       vararg callbacks: AfterVersion,
     ): QueryResult.Value<Unit> {
       var lastVersion = oldVersion
 
       callbacks.filter { it.afterVersion in oldVersion until newVersion }
       .sortedBy { it.afterVersion }
       .forEach { callback ->
         migrateInternal(driver, oldVersion = lastVersion, newVersion = callback.afterVersion + 1)
         callback.block(driver)
         lastVersion = callback.afterVersion + 1
       }
 
       if (lastVersion < newVersion) {
         migrateInternal(driver, lastVersion, newVersion)
       }
       return QueryResult.Unit
     }
   }
 }