Add migration for autocrypt peers

This commit is contained in:
Vincent Breitmoser
2018-01-17 15:40:46 +01:00
parent f5d9195958
commit 53953fb058

View File

@@ -412,10 +412,38 @@ public class KeychainDatabase extends SQLiteOpenHelper {
+ ")");
case 24:
db.execSQL("DROP TABLE api_autocrypt_peers");
db.execSQL(CREATE_API_AUTOCRYPT_PEERS);
db.execSQL("CREATE INDEX uids_by_email ON user_packets (email);");
db.beginTransaction();
db.execSQL("ALTER TABLE api_autocrypt_peers RENAME TO tmp");
db.execSQL("CREATE TABLE api_autocrypt_peers ("
+ "package_name TEXT NOT NULL, "
+ "identifier TEXT NOT NULL, "
+ "last_seen INTEGER, "
+ "last_seen_key INTEGER NULL, "
+ "is_mutual INTEGER NULL, "
+ "master_key_id INTEGER NULL, "
+ "gossip_master_key_id INTEGER NULL, "
+ "gossip_last_seen_key INTEGER NULL, "
+ "PRIMARY KEY(package_name, identifier), "
+ "FOREIGN KEY(package_name) REFERENCES api_apps (package_name) ON DELETE CASCADE"
+ ")");
db.execSQL("INSERT INTO api_autocrypt_peers " +
"(package_name, identifier, last_seen, gossip_last_seen_key, gossip_master_key_id, is_mutual) " +
"SELECT package_name, identifier, last_updated, last_seen_key, master_key_id, 0 " +
"FROM tmp WHERE state IN (1,2)");
db.execSQL("INSERT INTO api_autocrypt_peers " +
"(package_name, identifier, last_seen, last_seen_key, master_key_id, is_mutual) " +
"SELECT package_name, identifier, last_updated, last_seen_key, master_key_id, 0 " +
"FROM tmp WHERE state = 3");
db.execSQL("INSERT INTO api_autocrypt_peers " +
"(package_name, identifier, last_seen, last_seen_key, master_key_id, is_mutual) " +
"SELECT package_name, identifier, last_updated, last_seen_key, master_key_id, 1 " +
"FROM tmp WHERE state = 4");
db.execSQL("DROP TABLE tmp");
db.setTransactionSuccessful();
db.endTransaction();
db.execSQL("DROP INDEX keys_by_rank");
db.execSQL("CREATE INDEX uids_by_email ON user_packets (email);");
db.execSQL("CREATE INDEX keys_by_rank ON keys(rank, master_key_id);");
}
}