Move migration 19 before 17
Andreas Straub
created 10 years ago
Migration 17 depends on Account deserialization, so any migrations that
touch the accounts table need to be applied beforehand.
Re-writing the migration to work directly on the database would lead to
a lot of code duplication, so it's not worth it at this time, but might
become necessary later on to avoid dependency cycles.
Change summary
src/main/java/eu/siacs/conversations/persistance/DatabaseBackend.java | 9
1 file changed, 6 insertions(+), 3 deletions(-)
Detailed changes
@@ -304,6 +304,12 @@ public class DatabaseBackend extends SQLiteOpenHelper {
db.execSQL("ALTER TABLE " + Message.TABLENAME + " ADD COLUMN "
+ Message.CARBON + " INTEGER");
}
+ if (oldVersion < 19 && newVersion >= 19) {
+ db.execSQL("ALTER TABLE " + Account.TABLENAME + " ADD COLUMN "+ Account.DISPLAY_NAME+ " TEXT");
+ }
+ /* Any migrations that alter the Account table need to happen BEFORE this migration, as it
+ * depends on account de-serialization.
+ */
if (oldVersion < 17 && newVersion >= 17) {
List<Account> accounts = getAccounts(db);
for (Account account : accounts) {
@@ -325,9 +331,6 @@ public class DatabaseBackend extends SQLiteOpenHelper {
if (oldVersion < 18 && newVersion >= 18) {
db.execSQL("ALTER TABLE " + Message.TABLENAME + " ADD COLUMN "+ Message.READ+ " NUMBER DEFAULT 1");
}
- if (oldVersion < 19 && newVersion >= 19) {
- db.execSQL("ALTER TABLE " + Account.TABLENAME + " ADD COLUMN "+ Account.DISPLAY_NAME+ " TEXT");
- }
}
public static synchronized DatabaseBackend getInstance(Context context) {