Move migration 19 before 17

Andreas Straub created

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

src/main/java/eu/siacs/conversations/persistance/DatabaseBackend.java 🔗

@@ -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) {