diff --git a/src/main/kotlin/com/looker/droidify/database/Database.kt b/src/main/kotlin/com/looker/droidify/database/Database.kt index e266832c..ffe45792 100644 --- a/src/main/kotlin/com/looker/droidify/database/Database.kt +++ b/src/main/kotlin/com/looker/droidify/database/Database.kt @@ -477,7 +477,7 @@ object Database { ).observable(Subject.Repositories) } - // Unnecessary with Room + // Done fun transform(cursor: Cursor): Repository { return cursor.getBlob(cursor.getColumnIndex(Schema.Repository.ROW_DATA)) .jsonParse { @@ -600,7 +600,7 @@ object Database { return builder.query(db, signal).observable(Subject.Products) } - // Unnecessary with Room + // Done private fun transform(cursor: Cursor): Product { return cursor.getBlob(cursor.getColumnIndex(Schema.Product.ROW_DATA)) .jsonParse { @@ -613,7 +613,7 @@ object Database { } } - // TODO should be taken care of with extra functions that build on Room's queries + // Done fun transformItem(cursor: Cursor): ProductItem { return cursor.getBlob(cursor.getColumnIndex(Schema.Product.ROW_DATA_ITEM)) .jsonParse { @@ -726,7 +726,7 @@ object Database { } } - // Done with some changes in DAOS + // Done with some changes in DAOs object LockAdapter { // Done in insert (Lock object instead of pair) private fun put(lock: Pair, notify: Boolean) { @@ -766,6 +766,7 @@ object Database { private val Table.temporaryName: String get() = "${name}_temporary" + // Done fun createTemporaryTable() { db.execSQL("DROP TABLE IF EXISTS ${Schema.Product.temporaryName}") db.execSQL("DROP TABLE IF EXISTS ${Schema.Category.temporaryName}") diff --git a/src/main/kotlin/com/looker/droidify/utility/Utils.kt b/src/main/kotlin/com/looker/droidify/utility/Utils.kt index 657959f5..280886f1 100644 --- a/src/main/kotlin/com/looker/droidify/utility/Utils.kt +++ b/src/main/kotlin/com/looker/droidify/utility/Utils.kt @@ -3,11 +3,14 @@ package com.looker.droidify.utility import android.content.Context import android.content.pm.PackageInfo import android.content.pm.Signature +import android.database.Cursor import android.graphics.drawable.Drawable -import com.looker.droidify.R +import com.looker.droidify.* import com.looker.droidify.content.Preferences +import com.looker.droidify.database.Database.jsonParse import com.looker.droidify.entity.InstalledItem import com.looker.droidify.entity.Product +import com.looker.droidify.entity.ProductItem import com.looker.droidify.entity.Repository import com.looker.droidify.service.Connection import com.looker.droidify.service.DownloadService @@ -109,3 +112,34 @@ object Utils { } else Unit } } + +fun Cursor.getProduct(): Product = getBlob(getColumnIndex(ROW_DATA)) + .jsonParse { + Product.deserialize(it).apply { + this.repositoryId = getLong(getColumnIndex(ROW_REPOSITORY_ID)) + this.description = getString(getColumnIndex(ROW_DESCRIPTION)) + } + } + + +fun Cursor.getProductItem(): ProductItem = getBlob(getColumnIndex(ROW_DATA_ITEM)) + .jsonParse { + ProductItem.deserialize(it).apply { + this.repositoryId = getLong(getColumnIndex(ROW_REPOSITORY_ID)) + this.packageName = getString(getColumnIndex(ROW_PACKAGE_NAME)) + this.name = getString(getColumnIndex(ROW_NAME)) + this.summary = getString(getColumnIndex(ROW_SUMMARY)) + this.installedVersion = getString(getColumnIndex(ROW_VERSION)) + .orEmpty() + this.compatible = getInt(getColumnIndex(ROW_COMPATIBLE)) != 0 + this.canUpdate = getInt(getColumnIndex(ROW_CAN_UPDATE)) != 0 + this.matchRank = getInt(getColumnIndex(ROW_MATCH_RANK)) + } + } + +fun Cursor.getRepository(): Repository = getBlob(getColumnIndex(ROW_DATA)) + .jsonParse { + Repository.deserialize(it).apply { + this.id = getLong(getColumnIndex(ROW_ID)) + } + } \ No newline at end of file