/// <inheritdoc /> public Task SaveAppliedMigrationVersionAsync(string migrationName, DbVersion version, CancellationToken token = default) { AssertConnection(NpgsqlConnection); var script = $"INSERT INTO \"{_options.MigrationHistoryTableName}\" (name, version) " + $"VALUES ('{migrationName}', '{version.ToString()}');"; return(TryExecuteAsync( () => InternalExecuteScriptAsync(NpgsqlConnection, script, token), MigrationError.MigratingError, $"Can not save applied migration version to database \"{DbName}\" (version = {version})")); }
private ProjectMetadata GetDbProjectMetadata(DbProjectInfo dbProjectInfo, EnvironmentInfo environmentInfo) { var projectVersions = new List <MachineSpecificProjectVersion>(); DbProjectConfiguration dbProjectConfiguration = environmentInfo.GetDbProjectConfiguration(dbProjectInfo); DatabaseServer databaseServer = environmentInfo.GetDatabaseServer(dbProjectConfiguration.DatabaseServerId); var dbVersions = _dbVersionProvider.GetVersions( dbProjectInfo.DbName, databaseServer.MachineName); DbVersion latestDbVersion = dbVersions .Select(s => DbVersion.FromString(s.Version)) .OrderByDescending(v => v) .FirstOrDefault(); if (latestDbVersion != null) { projectVersions.Add(new MachineSpecificProjectVersion(databaseServer.MachineName, latestDbVersion.ToString())); } return(new ProjectMetadata(dbProjectInfo.Name, environmentInfo.Name, projectVersions)); }
public static void CheckUpdate() { var settings = new XmlReaderSettings { XmlResolver = null, DtdProcessing = DtdProcessing.Ignore }; //MessageBox.Show(MidsContext.Config.UpdatePath); using var xmlReader = XmlReader.Create(MidsContext.Config.UpdatePath, settings); while (xmlReader.Read()) { try { switch (xmlReader.Name) { case "app-version": { AppVersion = new Version(xmlReader.ReadElementContentAsString()); break; } case "db-version": { DbVersion = xmlReader.ReadElementContentAsFloat(); break; } case "changelog": { ChangeLog = xmlReader.ReadElementContentAsString(); break; } case "mandatory": { Mandatory = bool.Parse(xmlReader.ReadElementContentAsString()); break; } } } catch (Exception e) { MessageBox.Show($"{e.Message}\n{e.StackTrace}", "Error"); } } var cDbVersion = DatabaseAPI.Database.Version; if (AppVersion > MidsContext.AppVersion) { if (!Mandatory) { var appResult = MessageBox.Show($@"A new application update is available. Do you wish to update to v{AppVersion}?", @"Application Update available!", MessageBoxButtons.YesNo, MessageBoxIcon.Information); //MessageBox.Show(ChangeLog); if (appResult == DialogResult.Yes) { Update(UpdateType.App, AppVersion.ToString(), ChangeLog); } } else { Update(UpdateType.App, AppVersion.ToString(), ChangeLog); } } else if (DbVersion > cDbVersion && AppVersion < MidsContext.AppVersion) { if (!Mandatory) { var dbResult = MessageBox.Show($@"A new database update is available. Do you wish to update to v{DbVersion}?", @"Database Update Available!", MessageBoxButtons.YesNo, MessageBoxIcon.Information); if (dbResult == DialogResult.Yes) { Update(UpdateType.Database, DbVersion.ToString(CultureInfo.InvariantCulture), ChangeLog); } } else { Update(UpdateType.Database, DbVersion.ToString(CultureInfo.InvariantCulture), ChangeLog); } } else { MessageBox.Show($@"No update is available at this time.", @"Update Check", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
public static void CheckUpdate(frmMain parent) { var settings = new XmlReaderSettings { XmlResolver = null, DtdProcessing = DtdProcessing.Ignore }; using var xmlReader = XmlReader.Create(MidsContext.Config.UpdatePath, settings); while (xmlReader.Read()) { try { switch (xmlReader.Name) { case "app-version": { AppVersion = new Version(xmlReader.ReadElementContentAsString()); break; } case "db-version": { DbVersion = xmlReader.ReadElementContentAsFloat(); break; } case "changelog": { ChangeLog = xmlReader.ReadElementContentAsString(); break; } case "mandatory": { Mandatory = bool.Parse(xmlReader.ReadElementContentAsString()); break; } } } catch (XmlException e) { MessageBox.Show($"{e.Message}\r\n{e.StackTrace}", "Error"); } } var cDbVersion = DatabaseAPI.Database.Version; if (AppVersion > MidsContext.AppVersion) { if (!Mandatory) { var appResult = new UpdateQuery(parent) { Type = UpdateType.App.ToString() }; appResult.ShowDialog(); switch (appResult.DialogResult) { case DialogResult.Yes: { var patchNotes = new PatchNotes(parent, true) { Type = UpdateType.App.ToString(), Version = AppVersion.ToString() }; patchNotes.ShowDialog(); break; } case DialogResult.No: appResult.Close(); break; case DialogResult.OK: Update(UpdateType.App, AppVersion.ToString(), parent); break; } } else { Update(UpdateType.App, AppVersion.ToString(), parent); } } else if (DbVersion > cDbVersion && AppVersion < MidsContext.AppVersion) { if (!Mandatory) { var dbResult = new UpdateQuery(parent) { Type = UpdateType.Database.ToString() }; switch (dbResult.DialogResult) { case DialogResult.Yes: { var patchNotes = new PatchNotes(parent, true) { Type = UpdateType.Database.ToString(), Version = DbVersion.ToString(CultureInfo.InvariantCulture) }; patchNotes.ShowDialog(); break; } case DialogResult.No: dbResult.Close(); break; case DialogResult.OK: Update(UpdateType.Database, DbVersion.ToString(CultureInfo.InvariantCulture), parent); break; } } else { Update(UpdateType.Database, DbVersion.ToString(CultureInfo.InvariantCulture), parent); } } else { MessageBox.Show(@"No update is available at this time.", @"Update Check", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
/// <inheritdoc /> public Task DeleteAppliedMigrationVersionAsync(DbVersion version, CancellationToken token = default) { AssertConnection(NpgsqlConnection); var script = $"DELETE FROM \"{_options.MigrationHistoryTableName}\" WHERE version = {version.ToString()}"; return(TryExecuteAsync( () => InternalExecuteScriptAsync(NpgsqlConnection, script, token), MigrationError.MigratingError, $"Can not delete applied migration version from database \"{DbName}\" (version = {version})")); }