Added sort on sender

This commit is contained in:
M66B
2018-12-27 11:32:20 +00:00
parent 0ab8452495
commit 02a89260b4
11 changed files with 1341 additions and 9 deletions

View File

@@ -47,7 +47,7 @@ import io.requery.android.database.sqlite.RequerySQLiteOpenHelperFactory;
// https://developer.android.com/topic/libraries/architecture/room.html
@Database(
version = 26,
version = 27,
entities = {
EntityIdentity.class,
EntityAccount.class,
@@ -331,6 +331,34 @@ public abstract class DB extends RoomDatabase {
db.execSQL("ALTER TABLE `account` ADD COLUMN `browse` INTEGER NOT NULL DEFAULT " + browse);
}
})
.addMigrations(new Migration(26, 27) {
@Override
public void migrate(SupportSQLiteDatabase db) {
Log.i("DB migration from version " + startVersion + " to " + endVersion);
db.execSQL("ALTER TABLE `message` ADD COLUMN `sender` TEXT");
Cursor cursor = null;
try {
cursor = db.query("SELECT `id`, `from` FROM message");
while (cursor.moveToNext()) {
long id = cursor.getLong(0);
String json = cursor.getString(1);
Address[] from = Converters.decodeAddresses(json);
String sender = MessageHelper.getSortKey(from);
if (sender != null)
db.execSQL(
"UPDATE message SET sender = ? WHERE id = ?",
new Object[]{sender, id});
}
} finally {
if (cursor != null)
cursor.close();
}
db.execSQL("CREATE INDEX `index_message_sender` ON `message` (`sender`)");
}
})
.build();
}