Android: Handle a database downgrade.

This has no effect now, as we've never bumped the database version.
Instead, it adds future proofing, and makes moving between a future
version with a bump and master clean.
This commit is contained in:
Mike 2017-11-09 18:54:04 -08:00
parent 4dc425b9c9
commit 74ae2522fe
1 changed files with 22 additions and 9 deletions

View File

@ -78,6 +78,7 @@ public final class GameDatabase extends SQLiteOpenHelper
+ KEY_DB_ID + TYPE_PRIMARY + SEPARATOR + KEY_DB_ID + TYPE_PRIMARY + SEPARATOR
+ KEY_FOLDER_PATH + TYPE_STRING + CONSTRAINT_UNIQUE + ")"; + KEY_FOLDER_PATH + TYPE_STRING + CONSTRAINT_UNIQUE + ")";
private static final String SQL_DELETE_FOLDERS = "DROP TABLE IF EXISTS " + TABLE_NAME_FOLDERS;
private static final String SQL_DELETE_GAMES = "DROP TABLE IF EXISTS " + TABLE_NAME_GAMES; private static final String SQL_DELETE_GAMES = "DROP TABLE IF EXISTS " + TABLE_NAME_GAMES;
public GameDatabase(Context context) public GameDatabase(Context context)
@ -91,11 +92,19 @@ public final class GameDatabase extends SQLiteOpenHelper
{ {
Log.debug("[GameDatabase] GameDatabase - Creating database..."); Log.debug("[GameDatabase] GameDatabase - Creating database...");
Log.verbose("[GameDatabase] Executing SQL: " + SQL_CREATE_GAMES); execSqlAndLog(database, SQL_CREATE_GAMES);
database.execSQL(SQL_CREATE_GAMES); execSqlAndLog(database, SQL_CREATE_FOLDERS);
}
Log.verbose("[GameDatabase] Executing SQL: " + SQL_CREATE_FOLDERS); @Override
database.execSQL(SQL_CREATE_FOLDERS); public void onDowngrade(SQLiteDatabase database, int oldVersion, int newVersion)
{
Log.verbose("[GameDatabase] Downgrades not supporting, clearing databases..");
execSqlAndLog(database, SQL_DELETE_FOLDERS);
execSqlAndLog(database, SQL_CREATE_FOLDERS);
execSqlAndLog(database, SQL_DELETE_GAMES);
execSqlAndLog(database, SQL_CREATE_GAMES);
} }
@Override @Override
@ -103,11 +112,9 @@ public final class GameDatabase extends SQLiteOpenHelper
{ {
Log.info("[GameDatabase] Upgrading database from schema version " + oldVersion + " to " + newVersion); Log.info("[GameDatabase] Upgrading database from schema version " + oldVersion + " to " + newVersion);
Log.verbose("[GameDatabase] Executing SQL: " + SQL_DELETE_GAMES); // Delete all the games
database.execSQL(SQL_DELETE_GAMES); execSqlAndLog(database, SQL_DELETE_GAMES);
execSqlAndLog(database, SQL_CREATE_GAMES);
Log.verbose("[GameDatabase] Executing SQL: " + SQL_CREATE_GAMES);
database.execSQL(SQL_CREATE_GAMES);
Log.verbose("[GameDatabase] Re-scanning library with new schema."); Log.verbose("[GameDatabase] Re-scanning library with new schema.");
scanLibrary(database); scanLibrary(database);
@ -283,4 +290,10 @@ public final class GameDatabase extends SQLiteOpenHelper
} }
}); });
} }
private void execSqlAndLog(SQLiteDatabase database, String sql)
{
Log.verbose("[GameDatabase] Executing SQL: " + sql);
database.execSQL(sql);
}
} }