Recreate VAULT_ENTITY when changing CLOUD_ENTITY
Otherwise ForeignKeyBehaviour.ON_DELETE_SET_NULL causes vaults no longer have a cloud-id
This commit is contained in:
parent
40c679e7dd
commit
d448b37f43
@ -35,6 +35,39 @@ internal class Upgrade4To5 @Inject constructor() : DatabaseUpgrade(4, 5) {
|
|||||||
.from("CLOUD_ENTITY_OLD") //
|
.from("CLOUD_ENTITY_OLD") //
|
||||||
.executeOn(db)
|
.executeOn(db)
|
||||||
|
|
||||||
|
recreateVaultEntity(db)
|
||||||
|
|
||||||
Sql.dropTable("CLOUD_ENTITY_OLD").executeOn(db)
|
Sql.dropTable("CLOUD_ENTITY_OLD").executeOn(db)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun recreateVaultEntity(db: Database) {
|
||||||
|
Sql.alterTable("VAULT_ENTITY").renameTo("VAULT_ENTITY_OLD").executeOn(db)
|
||||||
|
Sql.createTable("VAULT_ENTITY") //
|
||||||
|
.id() //
|
||||||
|
.optionalInt("FOLDER_CLOUD_ID") //
|
||||||
|
.optionalText("FOLDER_PATH") //
|
||||||
|
.optionalText("FOLDER_NAME") //
|
||||||
|
.requiredText("CLOUD_TYPE") //
|
||||||
|
.optionalText("PASSWORD") //
|
||||||
|
.optionalInt("POSITION") //
|
||||||
|
.foreignKey("FOLDER_CLOUD_ID", "CLOUD_ENTITY", Sql.SqlCreateTableBuilder.ForeignKeyBehaviour.ON_DELETE_SET_NULL) //
|
||||||
|
.executeOn(db)
|
||||||
|
|
||||||
|
Sql.insertInto("VAULT_ENTITY") //
|
||||||
|
.select("_id", "FOLDER_CLOUD_ID", "FOLDER_PATH", "FOLDER_NAME", "PASSWORD", "POSITION", "CLOUD_ENTITY.TYPE") //
|
||||||
|
.columns("_id", "FOLDER_CLOUD_ID", "FOLDER_PATH", "FOLDER_NAME", "PASSWORD", "POSITION", "CLOUD_TYPE") //
|
||||||
|
.from("VAULT_ENTITY_OLD") //
|
||||||
|
.join("CLOUD_ENTITY", "VAULT_ENTITY_OLD.FOLDER_CLOUD_ID") //
|
||||||
|
.executeOn(db)
|
||||||
|
|
||||||
|
Sql.dropIndex("IDX_VAULT_ENTITY_FOLDER_PATH_FOLDER_CLOUD_ID").executeOn(db)
|
||||||
|
|
||||||
|
Sql.createUniqueIndex("IDX_VAULT_ENTITY_FOLDER_PATH_FOLDER_CLOUD_ID") //
|
||||||
|
.on("VAULT_ENTITY") //
|
||||||
|
.asc("FOLDER_PATH") //
|
||||||
|
.asc("FOLDER_CLOUD_ID") //
|
||||||
|
.executeOn(db)
|
||||||
|
|
||||||
|
Sql.dropTable("VAULT_ENTITY_OLD").executeOn(db)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user