Fix database upgrade from version 3 to 4

DAO object was used while upgrade which can lead later to crash when the object changed
This commit is contained in:
Julian Raufelder 2021-07-22 19:02:03 +02:00
parent 8435bd0174
commit cf439a1030
No known key found for this signature in database
GPG Key ID: 17EE71F6634E381D

View File

@ -1,10 +1,7 @@
package org.cryptomator.data.db package org.cryptomator.data.db
import org.cryptomator.data.db.Sql.SqlCreateTableBuilder.ForeignKeyBehaviour 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.database.Database
import org.greenrobot.greendao.internal.DaoConfig
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Singleton import javax.inject.Singleton
@ -54,13 +51,13 @@ internal class Upgrade3To4 @Inject constructor() : DatabaseUpgrade(3, 4) {
} }
private fun initVaultPositionUsingCurrentSortOrder(db: Database) { private fun initVaultPositionUsingCurrentSortOrder(db: Database) {
CloudEntityDao(DaoConfig(db, VaultEntityDao::class.java)) // Sql.query("VAULT_ENTITY").executeOn(db).use {
.loadAll() // while (it.moveToNext()) {
.map { Sql.update("VAULT_ENTITY")
Sql.update("VAULT_ENTITY") // .where("_id", Sql.eq(it.getLong(it.getColumnIndex("_id"))))
.where("_id", Sql.eq(it.id)) // .set("POSITION", Sql.toInteger(it.position))
.set("POSITION", Sql.toInteger(it.id - 1)) //
.executeOn(db) .executeOn(db)
} }
} }
} }
}