Delete local storage cloud and set its vault connection to null (#251)

This commit is contained in:
Julian Raufelder 2021-10-22 17:40:08 +02:00
parent 91d1a65ba7
commit 7add3e5bed
No known key found for this signature in database
GPG Key ID: 17EE71F6634E381D
4 changed files with 92 additions and 3 deletions

View File

@ -82,7 +82,7 @@ android {
}
greendao {
schemaVersion 9
schemaVersion 10
}
configurations.all {

View File

@ -50,6 +50,7 @@ class UpgradeDatabaseTest {
Upgrade6To7().applyTo(db, 6)
Upgrade7To8().applyTo(db, 7)
Upgrade8To9(sharedPreferencesHandler).applyTo(db, 8)
Upgrade9To10().applyTo(db, 9)
CloudEntityDao(DaoConfig(db, CloudEntityDao::class.java)).loadAll()
VaultEntityDao(DaoConfig(db, VaultEntityDao::class.java)).loadAll()
@ -407,4 +408,60 @@ class UpgradeDatabaseTest {
Assert.assertThat(sharedPreferencesHandler.isBetaModeAlreadyShown(), CoreMatchers.`is`(false))
}
@Test
fun upgrade9To10() {
Upgrade0To1().applyTo(db, 0)
Upgrade1To2().applyTo(db, 1)
Upgrade2To3(context).applyTo(db, 2)
Upgrade3To4().applyTo(db, 3)
Upgrade4To5().applyTo(db, 4)
Upgrade5To6().applyTo(db, 5)
Upgrade6To7().applyTo(db, 6)
Upgrade7To8().applyTo(db, 7)
Upgrade8To9(sharedPreferencesHandler).applyTo(db, 8)
Sql.insertInto("CLOUD_ENTITY") //
.integer("_id", 15) //
.text("TYPE", CloudType.LOCAL.name) //
.text("URL", "url") //
.text("USERNAME", "username") //
.text("WEBDAV_CERTIFICATE", "certificate") //
.text("ACCESS_TOKEN", "accessToken")
.text("S3_BUCKET", "s3Bucket") //
.text("S3_REGION", "s3Region") //
.text("S3_SECRET_KEY", "s3SecretKey") //
.executeOn(db)
Sql.insertInto("VAULT_ENTITY") //
.integer("_id", 25) //
.integer("FOLDER_CLOUD_ID", 15) //
.text("FOLDER_PATH", "path") //
.text("FOLDER_NAME", "name") //
.text("CLOUD_TYPE", CloudType.LOCAL.name) //
.text("PASSWORD", "password") //
.integer("POSITION", 10) //
.executeOn(db)
Sql.insertInto("VAULT_ENTITY") //
.integer("_id", 26) //
.integer("FOLDER_CLOUD_ID", 4) //
.text("FOLDER_PATH", "path") //
.text("FOLDER_NAME", "name") //
.text("CLOUD_TYPE", CloudType.LOCAL.name) //
.text("PASSWORD", "password") //
.integer("POSITION", 11) //
.executeOn(db)
Upgrade9To10().applyTo(db, 9)
Sql.query("VAULT_ENTITY").executeOn(db).use {
it.moveToFirst()
Assert.assertThat(it.getString(it.getColumnIndex("FOLDER_CLOUD_ID")), CoreMatchers.`is`("15"))
it.moveToNext()
Assert.assertThat(it.getString(it.getColumnIndex("FOLDER_CLOUD_ID")), CoreMatchers.nullValue())
}
}
}

View File

@ -27,7 +27,8 @@ class DatabaseUpgrades {
Upgrade5To6 upgrade5To6, //
Upgrade6To7 upgrade6To7, //
Upgrade7To8 upgrade7To8, //
Upgrade8To9 upgrade8To9) {
Upgrade8To9 upgrade8To9, //
Upgrade9To10 upgrade9To10) {
availableUpgrades = defineUpgrades( //
upgrade0To1, //
@ -38,7 +39,8 @@ class DatabaseUpgrades {
upgrade5To6, //
upgrade6To7, //
upgrade7To8, //
upgrade8To9);
upgrade8To9, //
upgrade9To10);
}
private static Comparator<DatabaseUpgrade> reverseOrder() {

View File

@ -0,0 +1,30 @@
package org.cryptomator.data.db
import org.cryptomator.domain.CloudType
import org.greenrobot.greendao.database.Database
import javax.inject.Inject
import javax.inject.Singleton
@Singleton
internal class Upgrade9To10 @Inject constructor() : DatabaseUpgrade(9, 10) {
override fun internalApplyTo(db: Database, origin: Int) {
db.beginTransaction()
try {
Sql.update("VAULT_ENTITY")
.set("FOLDER_CLOUD_ID", Sql.toString(null))
.where("FOLDER_CLOUD_ID", Sql.eq(4))
.executeOn(db)
Sql.deleteFrom("CLOUD_ENTITY")
.where("FOLDER_CLOUD_ID", Sql.eq(4))
.where("TYPE", Sql.eq(CloudType.LOCAL.name))
.executeOn(db)
db.setTransactionSuccessful()
} finally {
db.endTransaction()
}
}
}