From cf439a1030f39b567776043520bcd48ad0d546c0 Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Thu, 22 Jul 2021 19:02:03 +0200 Subject: [PATCH] Fix database upgrade from version 3 to 4 DAO object was used while upgrade which can lead later to crash when the object changed --- .../java/org/cryptomator/data/db/Upgrade3To4.kt | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/data/src/main/java/org/cryptomator/data/db/Upgrade3To4.kt b/data/src/main/java/org/cryptomator/data/db/Upgrade3To4.kt index 3ec1c106..fd443ec8 100644 --- a/data/src/main/java/org/cryptomator/data/db/Upgrade3To4.kt +++ b/data/src/main/java/org/cryptomator/data/db/Upgrade3To4.kt @@ -1,10 +1,7 @@ package org.cryptomator.data.db import org.cryptomator.data.db.Sql.SqlCreateTableBuilder.ForeignKeyBehaviour -import org.cryptomator.data.db.entities.CloudEntityDao -import org.cryptomator.data.db.entities.VaultEntityDao import org.greenrobot.greendao.database.Database -import org.greenrobot.greendao.internal.DaoConfig import javax.inject.Inject import javax.inject.Singleton @@ -54,13 +51,13 @@ internal class Upgrade3To4 @Inject constructor() : DatabaseUpgrade(3, 4) { } private fun initVaultPositionUsingCurrentSortOrder(db: Database) { - CloudEntityDao(DaoConfig(db, VaultEntityDao::class.java)) // - .loadAll() // - .map { - Sql.update("VAULT_ENTITY") // - .where("_id", Sql.eq(it.id)) // - .set("POSITION", Sql.toInteger(it.id - 1)) // + Sql.query("VAULT_ENTITY").executeOn(db).use { + while (it.moveToNext()) { + Sql.update("VAULT_ENTITY") + .where("_id", Sql.eq(it.getLong(it.getColumnIndex("_id")))) + .set("POSITION", Sql.toInteger(it.position)) .executeOn(db) } + } } }