Sakuno.KanColle.Amatsukaze.Game.Services.Records.SortieRecords.UpgradeFromOldVersionPreprocessStep C# (CSharp) Method

UpgradeFromOldVersionPreprocessStep() protected method

protected UpgradeFromOldVersionPreprocessStep ( int rpOldVersion ) : void
rpOldVersion int
return void
        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 { }
                }
        }