protected override void UpgradeFromOldVersionPreprocessStep(int rpOldVersion)
{
if (rpOldVersion == 1)
using (var rCommand = Connection.CreateCommand())
{
rCommand.CommandText =
"ALTER TABLE sortie_cell RENAME TO sortie_node;" +
"ALTER TABLE sortie_detail RENAME TO sortie_detail_old;" +
"CREATE TABLE IF NOT EXISTS sortie_detail(" +
"id INTEGER NOT NULL REFERENCES sortie(id), " +
"step INTEGER NOT NULL, " +
"node INTEGER NOT NULL, " +
"extra_info INTEGER, " +
"PRIMARY KEY(id, step)) WITHOUT ROWID;" +
"INSERT INTO sortie_detail(id, step, node, extra_info) " +
"SELECT id, (SELECT COUNT(*) - 1 FROM sortie_detail_old B WHERE B.id = A.id AND B.cell <= A.cell) AS step, cell, extra_info FROM sortie_detail_old A WHERE cell <> -1 " +
"UNION " +
"SELECT id, (SELECT COUNT(*) FROM sortie_detail_old B WHERE B.id = A.id) AS step, cell, extra_info FROM sortie_detail_old A WHERE cell = -1;" +
"DROP TABLE sortie_detail_old;";
rCommand.ExecuteNonQuery();
}
if (rpOldVersion < 3)
using (var rCommand = Connection.CreateCommand())
{
rCommand.CommandText =
"ALTER TABLE sortie ADD COLUMN difficulty INTEGER;" +
"UPDATE sortie SET difficulty = (SELECT node - (node + 2) / 3 * 3 + 3 FROM sortie_detail WHERE id = sortie.id) WHERE (SELECT is_event_map FROM sortie_map WHERE id = sortie.map) = 1;" +
"UPDATE sortie_detail SET node = (node + 2) / 3 WHERE (SELECT is_event_map FROM sortie_map WHERE id = (SELECT map FROM sortie WHERE id = sortie_detail.id)) AND node <> -1; ";
rCommand.ExecuteNonQuery();
}
if (rpOldVersion < 4)
using (var rCommand = Connection.CreateCommand())
{
rCommand.CommandText =
"ALTER TABLE sortie ADD COLUMN return_time INTEGER; " +
"ALTER TABLE sortie ADD COLUMN return_reason INTEGER; " +
"UPDATE sortie SET return_reason = (SELECT extra_info FROM sortie_detail WHERE id = sortie.id AND node = -1); " +
"DELETE FROM sortie_detail WHERE node = -1;";
rCommand.ExecuteNonQuery();
}
if (rpOldVersion < 5)
using (var rCommand = Connection.CreateCommand())
{
rCommand.CommandText = "ALTER TABLE sortie ADD COLUMN map_hp INTEGER;";
try
{
rCommand.ExecuteNonQuery();
}
catch { }
}
}