Blacker.MangaScraper.Library.SQLite.SchemaMigratorFromV1.Migrate C# (CSharp) Méthode

Migrate() public méthode

public Migrate ( SQLiteConnection connection ) : void
connection System.Data.SQLite.SQLiteConnection
Résultat void
        public void Migrate(SQLiteConnection connection)
        {
            using (var transaction = connection.BeginTransaction())
            {
                // create temporary table
                using (var cmd = new SQLiteCommand(ChaptersTableDefinition, connection, transaction))
                {
                    cmd.ExecuteNonQuery();
                }

                const string selectQuery = @"SELECT ScraperId, MangaId, ChapterId, ChapterName, Url, Downloaded, Path, IsZip FROM Chapters;";
                const string insertQuery = @"INSERT INTO ChaptersTemp(ScraperId, MangaId, ChapterId, ChapterName, Url, Downloaded, Path, DownloadFolder, FormatProviderId)
                                                VALUES (@ScraperId, @MangaId, @ChapterId, @ChapterName, @Url, @Downloaded, @Path, @DownloadFolder, @FormatProviderId)";

                using (var selectCommand = new SQLiteCommand(selectQuery, connection, transaction))
                using (var insertCommand = new SQLiteCommand(insertQuery, connection, transaction))
                using (IDataReader reader = selectCommand.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        string downloadFolder = Path.GetDirectoryName(reader.GetString(6));
                        bool isZip = reader.GetBoolean(7);

                        insertCommand.Parameters.AddWithValue("@ScraperId", reader.GetValue(0));
                        insertCommand.Parameters.AddWithValue("@MangaId", reader.GetValue(1));
                        insertCommand.Parameters.AddWithValue("@ChapterId", reader.GetValue(2));
                        insertCommand.Parameters.AddWithValue("@ChapterName", reader.GetValue(3));
                        insertCommand.Parameters.AddWithValue("@Url", reader.GetValue(4));
                        insertCommand.Parameters.AddWithValue("@Downloaded", reader.GetValue(5));
                        insertCommand.Parameters.AddWithValue("@Path", reader.GetValue(6));
                        insertCommand.Parameters.AddWithValue("@DownloadFolder", downloadFolder);
                        insertCommand.Parameters.AddWithValue("@FormatProviderId", isZip ? ZipFormatProviderId : FolderFormatProviderId);

                        insertCommand.ExecuteNonQuery();
                    }
                }

                const string finalizeQuery = @"DROP TABLE Chapters;
                                               ALTER TABLE ChaptersTemp RENAME TO Chapters;
                                               PRAGMA user_version = 2;";

                using (var cmd = new SQLiteCommand(finalizeQuery, connection, transaction))
                {
                    cmd.ExecuteNonQuery();
                }

                transaction.Commit();
            }
        }
SchemaMigratorFromV1