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:
parent
8435bd0174
commit
cf439a1030
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user