public void MigrateFromV2ToV3_testUpdaterMigrate(string fileName) { var filePath = Path.Combine(TestFilesDirectory, fileName); // copy file to test temp dir var tempPath = Path.Combine(TestTempPath, fileName); File.Copy(filePath, tempPath); var newFilePath = new Migrator().MigrateFromV2ToV3(filePath, true); using (var destDB = new CruiseDatastore_V3()) using (var srcDB = new CruiseDatastore_V3(newFilePath)) { try { var destConn = destDB.OpenConnection(); Updater_V3.Migrate(srcDB, destDB); var dumpPath = newFilePath + ".dump.crz3"; RegesterFileForCleanUp(dumpPath); destDB.BackupDatabase(dumpPath); File.Exists(dumpPath).Should().BeTrue(); using (var newdb = new CruiseDatastore_V3(dumpPath)) { var tables = newdb.GetTableNames(); newdb.AttachDB(srcDB, "olddb"); foreach (var t in tables) { var stuff = newdb.QueryGeneric($"SELECT * FROM main.{t} EXCEPT SELECT * FROM olddb.{t};") .ToArray(); if (t == "MessageLog") { stuff.Should().NotBeEmpty(); continue; } stuff.Should().BeEmpty(); } } } finally { destDB.ReleaseConnection(); } } }
static void Main(string[] args) { Console.WriteLine(string.Join(',', args)); try { if (args.Length > 0) { var convertArg = args[0]; if (File.Exists(convertArg) == false) { throw new FileNotFoundException("invalid file path", convertArg); } var filePath = Path.GetFullPath(convertArg); var directory = Path.GetDirectoryName(filePath); var fileName = Path.GetFileNameWithoutExtension(filePath); var extention = Path.GetExtension(filePath).ToLower(); if (extention == ".cruise" || extention == ".cut") { var v3Path = Path.Combine(directory, fileName + ".crz3"); Console.WriteLine($"Converting {filePath} --> {v3Path}"); using (var v2Db = new DAL(filePath)) using (var v3Db = new CruiseDatastore_V3()) { new Migrator().MigrateFromV2ToV3(v2Db, v3Db, deviceID: "CruiseCLI"); v3Db.BackupDatabase(v3Path); } } else if (extention == ".crz3") { var v2Path = Path.Combine(directory, fileName + ".cruise"); Console.WriteLine($"Converting {filePath} --> {v2Path}"); using (var v2Db = new DAL()) using (var v3Db = new CruiseDatastore_V3(filePath)) { var cruiseIDs = v3Db.QueryScalar <string>("SELECT CruiseID FROM Cruise;").ToArray(); if (cruiseIDs.Length > 1) { throw new InvalidOperationException("More than one cruise found"); } var cruiseID = cruiseIDs.Single(); var downMigrator = new DownMigrator(); downMigrator.MigrateFromV3ToV2(cruiseID, v3Db, v2Db, createdBy: "CruiseCLI"); v2Db.BackupDatabase(v2Path); } } } } catch (Exception e) { Console.WriteLine(e.Message); Console.WriteLine(e.StackTrace); Console.ReadLine(); } }