![JAR search and dependency download from the Maven repository](/logo.png)
commonMain.com.harmony.kotlin.data.datasource.database.harmonykotlin.CacheDatabaseImpl.kt Maven / Gradle / Ivy
package com.harmony.kotlin.`data`.datasource.database.harmonykotlin
import com.harmony.core.db.Cache
import com.harmony.core.db.CacheQueries
import com.harmony.kotlin.`data`.datasource.database.CacheDatabase
import com.squareup.sqldelight.Query
import com.squareup.sqldelight.TransacterImpl
import com.squareup.sqldelight.`internal`.copyOnWriteList
import com.squareup.sqldelight.db.SqlCursor
import com.squareup.sqldelight.db.SqlDriver
import kotlin.Any
import kotlin.ByteArray
import kotlin.Int
import kotlin.String
import kotlin.Unit
import kotlin.collections.MutableList
import kotlin.reflect.KClass
internal val KClass.schema: SqlDriver.Schema
get() = CacheDatabaseImpl.Schema
internal fun KClass.newInstance(driver: SqlDriver): CacheDatabase =
CacheDatabaseImpl(driver)
private class CacheDatabaseImpl(
driver: SqlDriver
) : TransacterImpl(driver), CacheDatabase {
public override val cacheQueries: CacheQueriesImpl = CacheQueriesImpl(this, driver)
public object Schema : SqlDriver.Schema {
public override val version: Int
get() = 1
public override fun create(driver: SqlDriver): Unit {
driver.execute(null, """
|CREATE TABLE cache (
| key TEXT NOT NULL PRIMARY KEY,
| value BLOB NOT NULL
|)
""".trimMargin(), 0)
}
public override fun migrate(
driver: SqlDriver,
oldVersion: Int,
newVersion: Int
): Unit {
}
}
}
private class CacheQueriesImpl(
private val database: CacheDatabaseImpl,
private val driver: SqlDriver
) : TransacterImpl(driver), CacheQueries {
internal val `value`: MutableList> = copyOnWriteList()
internal val selectAll: MutableList> = copyOnWriteList()
public override fun `value`(key: String, mapper: (key: String, value_: ByteArray) -> T):
Query = ValueQuery(key) { cursor ->
mapper(
cursor.getString(0)!!,
cursor.getBytes(1)!!
)
}
public override fun `value`(key: String): Query = value(key) { key_, value_ ->
Cache(
key_,
value_
)
}
public override fun selectAll(mapper: (key: String, value_: ByteArray) -> T): Query =
Query(389569751, selectAll, driver, "Cache.sq", "selectAll", """
|SELECT *
|FROM cache
""".trimMargin()) { cursor ->
mapper(
cursor.getString(0)!!,
cursor.getBytes(1)!!
)
}
public override fun selectAll(): Query = selectAll { key, value_ ->
Cache(
key,
value_
)
}
public override fun delete(key: String): Unit {
driver.execute(1687135513, """DELETE FROM cache WHERE key LIKE ?""", 1) {
bindString(1, key)
}
notifyQueries(1687135513, {database.cacheQueries.selectAll + database.cacheQueries.value})
}
public override fun insertOrUpdate(key: String, value_: ByteArray): Unit {
driver.execute(-110285869, """
|INSERT OR REPLACE INTO cache(key, value)
|VALUES(?, ?)
""".trimMargin(), 2) {
bindString(1, key)
bindBytes(2, value_)
}
notifyQueries(-110285869, {database.cacheQueries.selectAll + database.cacheQueries.value})
}
public override fun deleteAll(): Unit {
driver.execute(1746835912, """DELETE FROM cache""", 0)
notifyQueries(1746835912, {database.cacheQueries.selectAll + database.cacheQueries.value})
}
private inner class ValueQuery(
public val key: String,
mapper: (SqlCursor) -> T
) : Query(value, mapper) {
public override fun execute(): SqlCursor = driver.executeQuery(1179307075, """
|SELECT *
|FROM cache
|WHERE key LIKE ?
""".trimMargin(), 1) {
bindString(1, key)
}
public override fun toString(): String = "Cache.sq:value"
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy