Sakuno.KanColle.Amatsukaze.Game.Services.Records.BattleDetailRecords.CreateTable C# (CSharp) Method

CreateTable() protected method

protected CreateTable ( ) : void
return void
        protected override void CreateTable()
        {
            using (var rCommand = r_Connection.CreateCommand())
            {
                rCommand.CommandText = "CREATE TABLE IF NOT EXISTS battle(" +
                    "id INTEGER PRIMARY KEY NOT NULL, " +
                    "first BLOB NOT NULL, " +
                    "second BLOB, " +
                    "result BLOB);" +

                "CREATE TABLE IF NOT EXISTS participant_fleet_name(" +
                    "id INTEGER PRIMARY KEY, " +
                    "name TEXT NOT NULL);" +
                "CREATE TABLE IF NOT EXISTS participant_fleet(" +
                    "battle INTEGER NOT NULL REFERENCES battle(id), " +
                    "id INTEGER NOT NULL, " +
                    "name INTEGER NOT NULL REFERENCES participant_fleet_name(id), " +
                    "PRIMARY KEY(battle, id)) WITHOUT ROWID;" +

                "CREATE TABLE IF NOT EXISTS participant(" +
                    "battle INTEGER NOT NULL REFERENCES battle(id), " +
                    "id INTEGER NOT NULL, " +
                    "ship INTEGER NOT NULL, " +
                    "level INTEGER NOT NULL, " +
                    "condition INTEGER NOT NULL, " +
                    "fuel INTEGER NOT NULL, " +
                    "bullet INTEGER NOT NULL, " +
                    "firepower INTEGER NOT NULL, " +
                    "torpedo INTEGER NOT NULL, " +
                    "aa INTEGER NOT NULL, " +
                    "armor INTEGER NOT NULL, " +
                    "evasion INTEGER NOT NULL, " +
                    "asw INTEGER NOT NULL, " +
                    "los INTEGER NOT NULL, " +
                    "luck INTEGER NOT NULL, " +
                    "range INTEGER NOT NULL, " +
                    "PRIMARY KEY(battle, id)) WITHOUT ROWID;" +
                "CREATE TABLE IF NOT EXISTS participant_slot(" +
                    "battle INTEGER NOT NULL REFERENCES battle(id), " +
                    "participant INTEGER NOT NULL, " +
                    "id INTEGER NOT NULL, " +
                    "equipment INTEGER NOT NULL, " +
                    "level INTEGER NOT NULL, " +
                    "plane_count INTEGER NOT NULL, " +
                    "PRIMARY KEY(battle, participant, id), " +
                    "FOREIGN KEY(battle, participant) REFERENCES participant(battle, id)) WITHOUT ROWID;" +

                "CREATE TABLE IF NOT EXISTS participant_heavily_damaged(" +
                    "battle INTEGER NOT NULL REFERENCES battle(id), " +
                    "id INTEGER NOT NULL, " +
                    "PRIMARY KEY(battle, id), " +
                    "FOREIGN KEY(battle, id) REFERENCES participant(battle, id)) WITHOUT ROWID;" +

                "CREATE TABLE IF NOT EXISTS practice_opponent(" +
                    "id INTEGER PRIMARY KEY NOT NULL, " +
                    "name TEXT NOT NULL);" +
                "CREATE TABLE IF NOT EXISTS practice_opponent_comment(" +
                    "id INTEGER PRIMARY KEY NOT NULL, " +
                    "comment TEXT NOT NULL);" +
                "CREATE TABLE IF NOT EXISTS practice_opponent_fleet(" +
                    "id INTEGER PRIMARY KEY NOT NULL, " +
                    "name TEXT NOT NULL);" +
                "CREATE TABLE IF NOT EXISTS practice(" +
                    "id INTEGER PRIMARY KEY NOT NULL, " +
                    "opponent INTEGER NOT NULL, " +
                    "opponent_level INTEGER NOT NULL, " +
                    "opponent_experience INTEGER NOT NULL, " +
                    "opponent_rank INTEGER NOT NULL, " +
                    "opponent_comment INTEGER NOT NULL REFERENCES practice_opponent_comment(id), " +
                    "opponent_fleet INTEGER NOT NULL REFERENCES practice_opponent_fleet(id), " +
                    "rank INTEGER); " +

                "CREATE VIEW IF NOT EXISTS participant_hd_view AS " +
                    "SELECT participant_heavily_damaged.battle AS battle, group_concat(participant.ship) AS ships FROM participant_heavily_damaged " +
                    "JOIN participant participant ON participant_heavily_damaged.battle = participant.battle AND participant_heavily_damaged.id = participant.id " +
                    "GROUP BY participant_heavily_damaged.battle;";

                rCommand.ExecuteNonQuery();
            }

            using (var rCommand = Connection.CreateCommand())
            {
                rCommand.CommandText = "ATTACH @battle_detail_db AS battle_detail";
                rCommand.Parameters.AddWithValue("@battle_detail_db", r_Filename);
                rCommand.ExecuteNonQuery();
            }

            if (r_Connection != null)
            {
                r_Connection.Dispose();
                r_Connection = null;
            }
        }