From 62ae4fb265d49cae378b41485dbb8de98e0a66dc Mon Sep 17 00:00:00 2001 From: David Sparer Date: Thu, 4 May 2017 17:16:55 -0600 Subject: [PATCH] split sql db version upgraders to separate classes --- .../SqlVersion22To23UpgraderTests.cs | 28 ++++ .../SqlVersion23To24UpgraderTests.cs | 28 ++++ .../SqlVersion24To25UpgraderTests.cs | 28 ++++ .../SqlVersion25To26UpgraderTests.cs | 28 ++++ mRemoteNGTests/mRemoteNGTests.csproj | 4 + .../Config/Connections/ConnectionsLoader.cs | 1 + .../Config/Connections/ConnectionsSaver.cs | 1 + .../Serializers/SqlDatabaseVersionVerifier.cs | 158 ------------------ .../Versioning/IVersionUpgrader.cs | 10 ++ .../Versioning/SqlDatabaseVersionRetriever.cs | 41 +++++ .../Versioning/SqlDatabaseVersionVerifier.cs | 76 +++++++++ .../Versioning/SqlVersion22To23Upgrader.cs | 39 +++++ .../Versioning/SqlVersion23To24Upgrader.cs | 37 ++++ .../Versioning/SqlVersion24To25Upgrader.cs | 39 +++++ .../Versioning/SqlVersion25To26Upgrader.cs | 43 +++++ mRemoteV1/mRemoteV1.csproj | 8 +- 16 files changed, 410 insertions(+), 159 deletions(-) create mode 100644 mRemoteNGTests/Config/Serializers/Versioning/SqlVersion22To23UpgraderTests.cs create mode 100644 mRemoteNGTests/Config/Serializers/Versioning/SqlVersion23To24UpgraderTests.cs create mode 100644 mRemoteNGTests/Config/Serializers/Versioning/SqlVersion24To25UpgraderTests.cs create mode 100644 mRemoteNGTests/Config/Serializers/Versioning/SqlVersion25To26UpgraderTests.cs delete mode 100644 mRemoteV1/Config/Serializers/SqlDatabaseVersionVerifier.cs create mode 100644 mRemoteV1/Config/Serializers/Versioning/IVersionUpgrader.cs create mode 100644 mRemoteV1/Config/Serializers/Versioning/SqlDatabaseVersionRetriever.cs create mode 100644 mRemoteV1/Config/Serializers/Versioning/SqlDatabaseVersionVerifier.cs create mode 100644 mRemoteV1/Config/Serializers/Versioning/SqlVersion22To23Upgrader.cs create mode 100644 mRemoteV1/Config/Serializers/Versioning/SqlVersion23To24Upgrader.cs create mode 100644 mRemoteV1/Config/Serializers/Versioning/SqlVersion24To25Upgrader.cs create mode 100644 mRemoteV1/Config/Serializers/Versioning/SqlVersion25To26Upgrader.cs diff --git a/mRemoteNGTests/Config/Serializers/Versioning/SqlVersion22To23UpgraderTests.cs b/mRemoteNGTests/Config/Serializers/Versioning/SqlVersion22To23UpgraderTests.cs new file mode 100644 index 000000000..5ee14d3a7 --- /dev/null +++ b/mRemoteNGTests/Config/Serializers/Versioning/SqlVersion22To23UpgraderTests.cs @@ -0,0 +1,28 @@ +using System; +using mRemoteNG.Config.DatabaseConnectors; +using mRemoteNG.Config.Serializers.Versioning; +using NSubstitute; +using NUnit.Framework; + +namespace mRemoteNGTests.Config.Serializers.Versioning +{ + public class SqlVersion22To23UpgraderTests + { + private SqlVersion22To23Upgrader _versionUpgrader; + + [SetUp] + public void Setup() + { + var sqlConnector = Substitute.For(); + _versionUpgrader = new SqlVersion22To23Upgrader(sqlConnector); + } + + [Test] + public void CanUpgradeIfVersionIs22() + { + var currentVersion = new Version(2, 2); + var canUpgrade = _versionUpgrader.CanUpgrade(currentVersion); + Assert.That(canUpgrade, Is.True); + } + } +} \ No newline at end of file diff --git a/mRemoteNGTests/Config/Serializers/Versioning/SqlVersion23To24UpgraderTests.cs b/mRemoteNGTests/Config/Serializers/Versioning/SqlVersion23To24UpgraderTests.cs new file mode 100644 index 000000000..3eb6a9b97 --- /dev/null +++ b/mRemoteNGTests/Config/Serializers/Versioning/SqlVersion23To24UpgraderTests.cs @@ -0,0 +1,28 @@ +using System; +using mRemoteNG.Config.DatabaseConnectors; +using mRemoteNG.Config.Serializers.Versioning; +using NSubstitute; +using NUnit.Framework; + +namespace mRemoteNGTests.Config.Serializers.Versioning +{ + public class SqlVersion23To24UpgraderTests + { + private SqlVersion23To24Upgrader _versionUpgrader; + + [SetUp] + public void Setup() + { + var sqlConnector = Substitute.For(); + _versionUpgrader = new SqlVersion23To24Upgrader(sqlConnector); + } + + [Test] + public void CanUpgradeIfVersionIs23() + { + var currentVersion = new Version(2, 3); + var canUpgrade = _versionUpgrader.CanUpgrade(currentVersion); + Assert.That(canUpgrade, Is.True); + } + } +} \ No newline at end of file diff --git a/mRemoteNGTests/Config/Serializers/Versioning/SqlVersion24To25UpgraderTests.cs b/mRemoteNGTests/Config/Serializers/Versioning/SqlVersion24To25UpgraderTests.cs new file mode 100644 index 000000000..0b26cc788 --- /dev/null +++ b/mRemoteNGTests/Config/Serializers/Versioning/SqlVersion24To25UpgraderTests.cs @@ -0,0 +1,28 @@ +using System; +using mRemoteNG.Config.DatabaseConnectors; +using mRemoteNG.Config.Serializers.Versioning; +using NSubstitute; +using NUnit.Framework; + +namespace mRemoteNGTests.Config.Serializers.Versioning +{ + public class SqlVersion24To25UpgraderTests + { + private SqlVersion24To25Upgrader _versionUpgrader; + + [SetUp] + public void Setup() + { + var sqlConnector = Substitute.For(); + _versionUpgrader = new SqlVersion24To25Upgrader(sqlConnector); + } + + [Test] + public void CanUpgradeIfVersionIs24() + { + var currentVersion = new Version(2, 4); + var canUpgrade = _versionUpgrader.CanUpgrade(currentVersion); + Assert.That(canUpgrade, Is.True); + } + } +} \ No newline at end of file diff --git a/mRemoteNGTests/Config/Serializers/Versioning/SqlVersion25To26UpgraderTests.cs b/mRemoteNGTests/Config/Serializers/Versioning/SqlVersion25To26UpgraderTests.cs new file mode 100644 index 000000000..e01aa88f8 --- /dev/null +++ b/mRemoteNGTests/Config/Serializers/Versioning/SqlVersion25To26UpgraderTests.cs @@ -0,0 +1,28 @@ +using System; +using mRemoteNG.Config.DatabaseConnectors; +using mRemoteNG.Config.Serializers.Versioning; +using NSubstitute; +using NUnit.Framework; + +namespace mRemoteNGTests.Config.Serializers.Versioning +{ + public class SqlVersion25To26UpgraderTests + { + private SqlVersion25To26Upgrader _versionUpgrader; + + [SetUp] + public void Setup() + { + var sqlConnector = Substitute.For(); + _versionUpgrader = new SqlVersion25To26Upgrader(sqlConnector); + } + + [Test] + public void CanUpgradeIfVersionIs25() + { + var currentVersion = new Version(2, 5); + var canUpgrade = _versionUpgrader.CanUpgrade(currentVersion); + Assert.That(canUpgrade, Is.True); + } + } +} \ No newline at end of file diff --git a/mRemoteNGTests/mRemoteNGTests.csproj b/mRemoteNGTests/mRemoteNGTests.csproj index 436dc46aa..27526eb17 100644 --- a/mRemoteNGTests/mRemoteNGTests.csproj +++ b/mRemoteNGTests/mRemoteNGTests.csproj @@ -131,6 +131,10 @@ + + + + diff --git a/mRemoteV1/Config/Connections/ConnectionsLoader.cs b/mRemoteV1/Config/Connections/ConnectionsLoader.cs index 1d2abf814..2b4daf94b 100644 --- a/mRemoteV1/Config/Connections/ConnectionsLoader.cs +++ b/mRemoteV1/Config/Connections/ConnectionsLoader.cs @@ -4,6 +4,7 @@ using mRemoteNG.Config.DatabaseConnectors; using mRemoteNG.Config.DataProviders; using mRemoteNG.Config.Putty; using mRemoteNG.Config.Serializers; +using mRemoteNG.Config.Serializers.Versioning; using mRemoteNG.Credential; using mRemoteNG.Tools; using mRemoteNG.Tree; diff --git a/mRemoteV1/Config/Connections/ConnectionsSaver.cs b/mRemoteV1/Config/Connections/ConnectionsSaver.cs index 1d0c67d0b..2000742f5 100644 --- a/mRemoteV1/Config/Connections/ConnectionsSaver.cs +++ b/mRemoteV1/Config/Connections/ConnectionsSaver.cs @@ -11,6 +11,7 @@ using mRemoteNG.App.Info; using mRemoteNG.Config.DatabaseConnectors; using mRemoteNG.Config.DataProviders; using mRemoteNG.Config.Serializers; +using mRemoteNG.Config.Serializers.Versioning; using mRemoteNG.Connection; using mRemoteNG.Connection.Protocol; using mRemoteNG.Connection.Protocol.RDP; diff --git a/mRemoteV1/Config/Serializers/SqlDatabaseVersionVerifier.cs b/mRemoteV1/Config/Serializers/SqlDatabaseVersionVerifier.cs deleted file mode 100644 index 8decd635b..000000000 --- a/mRemoteV1/Config/Serializers/SqlDatabaseVersionVerifier.cs +++ /dev/null @@ -1,158 +0,0 @@ -using System; -using System.Data.SqlClient; -using System.Globalization; -using mRemoteNG.App; -using mRemoteNG.App.Info; -using mRemoteNG.Config.DatabaseConnectors; -using mRemoteNG.Messages; - -namespace mRemoteNG.Config.Serializers -{ - public class SqlDatabaseVersionVerifier - { - private readonly SqlDatabaseConnector _sqlDatabaseConnector; - - public SqlDatabaseVersionVerifier(SqlDatabaseConnector sqlDatabaseConnector) - { - if (sqlDatabaseConnector == null) - throw new ArgumentNullException(nameof(sqlDatabaseConnector)); - - _sqlDatabaseConnector = sqlDatabaseConnector; - } - - public bool VerifyDatabaseVersion() - { - var isVerified = false; - try - { - var databaseVersion = GetDatabaseVersion(_sqlDatabaseConnector); - - if (databaseVersion.Equals(new Version())) - { - return true; - } - - if (databaseVersion.CompareTo(new Version(2, 2)) == 0) // 2.2 - { - UpgradeFrom2_2(); - databaseVersion = new Version(2, 3); - } - - if (databaseVersion.CompareTo(new Version(2, 3)) == 0) // 2.3 - { - UpgradeFrom2_3(); - databaseVersion = new Version(2, 4); - } - - if (databaseVersion.CompareTo(new Version(2, 4)) == 0) // 2.4 - { - UpgradeFrom2_4(); - databaseVersion = new Version(2, 5); - } - - if (databaseVersion.CompareTo(new Version(2, 5)) == 0) // 2.5 - { - UpgradeFrom2_5(); - databaseVersion = new Version(2, 6); - } - - if (databaseVersion.CompareTo(new Version(2, 6)) == 0) // 2.6 - isVerified = true; - - if (isVerified == false) - Runtime.MessageCollector.AddMessage(MessageClass.WarningMsg, - string.Format(Language.strErrorBadDatabaseVersion, databaseVersion, GeneralAppInfo.ProductName)); - } - catch (Exception ex) - { - Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg, - string.Format(Language.strErrorVerifyDatabaseVersionFailed, ex.Message)); - } - return isVerified; - } - - private Version GetDatabaseVersion(SqlDatabaseConnector sqlDatabaseConnector) - { - Version databaseVersion; - SqlDataReader sqlDataReader = null; - try - { - var sqlCommand = new SqlCommand("SELECT * FROM tblRoot", sqlDatabaseConnector.SqlConnection); - if (!sqlDatabaseConnector.IsConnected) - sqlDatabaseConnector.Connect(); - sqlDataReader = sqlCommand.ExecuteReader(); - if (!sqlDataReader.HasRows) - return new Version(); // assume new empty database - else - sqlDataReader.Read(); - databaseVersion = - new Version(Convert.ToString(sqlDataReader["confVersion"], CultureInfo.InvariantCulture)); - } - catch (Exception ex) - { - Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg, $"Retrieving database version failed. {ex}"); - throw; - } - finally - { - if (sqlDataReader != null && !sqlDataReader.IsClosed) - sqlDataReader.Close(); - } - return databaseVersion; - } - - private void UpgradeFrom2_2() - { - Runtime.MessageCollector.AddMessage(MessageClass.InformationMsg, "Upgrading database from version 2.2 to version 2.3."); - const string sqlText = @" -ALTER TABLE tblCons -ADD EnableFontSmoothing bit NOT NULL DEFAULT 0, - EnableDesktopComposition bit NOT NULL DEFAULT 0, - InheritEnableFontSmoothing bit NOT NULL DEFAULT 0, - InheritEnableDesktopComposition bit NOT NULL DEFAULT 0;"; - var sqlCommand = new SqlCommand(sqlText, _sqlDatabaseConnector.SqlConnection); - sqlCommand.ExecuteNonQuery(); - } - - private void UpgradeFrom2_3() - { - Runtime.MessageCollector.AddMessage(MessageClass.InformationMsg, "Upgrading database from version 2.3 to version 2.4."); - const string sqlText = @" -ALTER TABLE tblCons -ADD UseCredSsp bit NOT NULL DEFAULT 1, - InheritUseCredSsp bit NOT NULL DEFAULT 0;"; - var sqlCommand = new SqlCommand(sqlText, _sqlDatabaseConnector.SqlConnection); - sqlCommand.ExecuteNonQuery(); - } - - private void UpgradeFrom2_4() - { - Runtime.MessageCollector.AddMessage(MessageClass.InformationMsg, "Upgrading database from version 2.4 to version 2.5."); - const string sqlText = @" -ALTER TABLE tblCons -ADD LoadBalanceInfo varchar (1024) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - AutomaticResize bit NOT NULL DEFAULT 1, - InheritLoadBalanceInfo bit NOT NULL DEFAULT 0, - InheritAutomaticResize bit NOT NULL DEFAULT 0;"; - var sqlCommand = new SqlCommand(sqlText, _sqlDatabaseConnector.SqlConnection); - sqlCommand.ExecuteNonQuery(); - } - - private void UpgradeFrom2_5() - { - Runtime.MessageCollector.AddMessage(MessageClass.InformationMsg, "Upgrading database from version 2.5 to version 2.6."); - const string sqlText = @" -ALTER TABLE tblCons -ADD RDPMinutesToIdleTimeout int NOT NULL DEFAULT 0, - RDPAlertIdleTimeout bit NOT NULL DEFAULT 0, - SoundQuality varchar (20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL DEFAULT 'Dynamic', - InheritRDPMinutesToIdleTimeout bit NOT NULL DEFAULT 0, - InheritRDPAlertIdleTimeout bit NOT NULL DEFAULT 0, - InheritSoundQuality bit NOT NULL DEFAULT 0; -UPDATE tblRoot - SET ConfVersion='2.6'"; - var sqlCommand = new SqlCommand(sqlText, _sqlDatabaseConnector.SqlConnection); - sqlCommand.ExecuteNonQuery(); - } - } -} \ No newline at end of file diff --git a/mRemoteV1/Config/Serializers/Versioning/IVersionUpgrader.cs b/mRemoteV1/Config/Serializers/Versioning/IVersionUpgrader.cs new file mode 100644 index 000000000..3f2bd617f --- /dev/null +++ b/mRemoteV1/Config/Serializers/Versioning/IVersionUpgrader.cs @@ -0,0 +1,10 @@ +using System; + +namespace mRemoteNG.Config.Serializers.Versioning +{ + public interface IVersionUpgrader + { + bool CanUpgrade(Version currentVersion); + void Upgrade(); + } +} \ No newline at end of file diff --git a/mRemoteV1/Config/Serializers/Versioning/SqlDatabaseVersionRetriever.cs b/mRemoteV1/Config/Serializers/Versioning/SqlDatabaseVersionRetriever.cs new file mode 100644 index 000000000..61c1a778c --- /dev/null +++ b/mRemoteV1/Config/Serializers/Versioning/SqlDatabaseVersionRetriever.cs @@ -0,0 +1,41 @@ +using System; +using System.Data.SqlClient; +using System.Globalization; +using mRemoteNG.App; +using mRemoteNG.Config.DatabaseConnectors; +using mRemoteNG.Messages; + +namespace mRemoteNG.Config.Serializers.Versioning +{ + public class SqlDatabaseVersionRetriever + { + public Version GetDatabaseVersion(SqlDatabaseConnector sqlDatabaseConnector) + { + Version databaseVersion; + SqlDataReader sqlDataReader = null; + try + { + var sqlCommand = new SqlCommand("SELECT * FROM tblRoot", sqlDatabaseConnector.SqlConnection); + if (!sqlDatabaseConnector.IsConnected) + sqlDatabaseConnector.Connect(); + sqlDataReader = sqlCommand.ExecuteReader(); + if (!sqlDataReader.HasRows) + return new Version(); // assume new empty database + else + sqlDataReader.Read(); + databaseVersion = new Version(Convert.ToString(sqlDataReader["confVersion"], CultureInfo.InvariantCulture)); + } + catch (Exception ex) + { + Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg, $"Retrieving database version failed. {ex}"); + throw; + } + finally + { + if (sqlDataReader != null && !sqlDataReader.IsClosed) + sqlDataReader.Close(); + } + return databaseVersion; + } + } +} \ No newline at end of file diff --git a/mRemoteV1/Config/Serializers/Versioning/SqlDatabaseVersionVerifier.cs b/mRemoteV1/Config/Serializers/Versioning/SqlDatabaseVersionVerifier.cs new file mode 100644 index 000000000..a2ede1bb4 --- /dev/null +++ b/mRemoteV1/Config/Serializers/Versioning/SqlDatabaseVersionVerifier.cs @@ -0,0 +1,76 @@ +using System; +using mRemoteNG.App; +using mRemoteNG.App.Info; +using mRemoteNG.Config.DatabaseConnectors; +using mRemoteNG.Messages; + +namespace mRemoteNG.Config.Serializers.Versioning +{ + public class SqlDatabaseVersionVerifier + { + private readonly SqlDatabaseConnector _sqlDatabaseConnector; + private readonly SqlDatabaseVersionRetriever _versionRetriever; + + public SqlDatabaseVersionVerifier(SqlDatabaseConnector sqlDatabaseConnector) + { + if (sqlDatabaseConnector == null) + throw new ArgumentNullException(nameof(sqlDatabaseConnector)); + + _sqlDatabaseConnector = sqlDatabaseConnector; + _versionRetriever = new SqlDatabaseVersionRetriever(); + } + + public bool VerifyDatabaseVersion() + { + var isVerified = false; + try + { + var databaseVersion = _versionRetriever.GetDatabaseVersion(_sqlDatabaseConnector); + + if (databaseVersion.Equals(new Version())) + { + return true; + } + + var sql22To23Upgrader = new SqlVersion22To23Upgrader(_sqlDatabaseConnector); + if (sql22To23Upgrader.CanUpgrade(databaseVersion)) + { + sql22To23Upgrader.Upgrade(); + databaseVersion = new Version(2, 3); + } + + var sql23To24Upgrader = new SqlVersion23To24Upgrader(_sqlDatabaseConnector); + if (sql23To24Upgrader.CanUpgrade(databaseVersion)) + { + sql23To24Upgrader.Upgrade(); + databaseVersion = new Version(2, 4); + } + + var sql24To25Upgrader = new SqlVersion24To25Upgrader(_sqlDatabaseConnector); + if (sql24To25Upgrader.CanUpgrade(databaseVersion)) + { + sql24To25Upgrader.Upgrade(); + databaseVersion = new Version(2, 5); + } + + var sql25To26Upgrader = new SqlVersion25To26Upgrader(_sqlDatabaseConnector); + if (sql25To26Upgrader.CanUpgrade(databaseVersion)) + { + sql25To26Upgrader.Upgrade(); + databaseVersion = new Version(2, 6); + } + + if (databaseVersion.CompareTo(new Version(2, 6)) == 0) // 2.6 + isVerified = true; + + if (isVerified == false) + Runtime.MessageCollector.AddMessage(MessageClass.WarningMsg, string.Format(Language.strErrorBadDatabaseVersion, databaseVersion, GeneralAppInfo.ProductName)); + } + catch (Exception ex) + { + Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg, string.Format(Language.strErrorVerifyDatabaseVersionFailed, ex.Message)); + } + return isVerified; + } + } +} \ No newline at end of file diff --git a/mRemoteV1/Config/Serializers/Versioning/SqlVersion22To23Upgrader.cs b/mRemoteV1/Config/Serializers/Versioning/SqlVersion22To23Upgrader.cs new file mode 100644 index 000000000..d585c9420 --- /dev/null +++ b/mRemoteV1/Config/Serializers/Versioning/SqlVersion22To23Upgrader.cs @@ -0,0 +1,39 @@ +using System; +using System.Data.SqlClient; +using mRemoteNG.App; +using mRemoteNG.Config.DatabaseConnectors; +using mRemoteNG.Messages; + +namespace mRemoteNG.Config.Serializers.Versioning +{ + public class SqlVersion22To23Upgrader : IVersionUpgrader + { + private readonly SqlDatabaseConnector _sqlDatabaseConnector; + + public SqlVersion22To23Upgrader(SqlDatabaseConnector sqlDatabaseConnector) + { + if (sqlDatabaseConnector == null) + throw new ArgumentNullException(nameof(sqlDatabaseConnector)); + + _sqlDatabaseConnector = sqlDatabaseConnector; + } + + public bool CanUpgrade(Version currentVersion) + { + return currentVersion.CompareTo(new Version(2, 2)) == 0; + } + + public void Upgrade() + { + Runtime.MessageCollector.AddMessage(MessageClass.InformationMsg, "Upgrading database from version 2.2 to version 2.3."); + const string sqlText = @" +ALTER TABLE tblCons +ADD EnableFontSmoothing bit NOT NULL DEFAULT 0, + EnableDesktopComposition bit NOT NULL DEFAULT 0, + InheritEnableFontSmoothing bit NOT NULL DEFAULT 0, + InheritEnableDesktopComposition bit NOT NULL DEFAULT 0;"; + var sqlCommand = new SqlCommand(sqlText, _sqlDatabaseConnector.SqlConnection); + sqlCommand.ExecuteNonQuery(); + } + } +} \ No newline at end of file diff --git a/mRemoteV1/Config/Serializers/Versioning/SqlVersion23To24Upgrader.cs b/mRemoteV1/Config/Serializers/Versioning/SqlVersion23To24Upgrader.cs new file mode 100644 index 000000000..5010cd169 --- /dev/null +++ b/mRemoteV1/Config/Serializers/Versioning/SqlVersion23To24Upgrader.cs @@ -0,0 +1,37 @@ +using System; +using System.Data.SqlClient; +using mRemoteNG.App; +using mRemoteNG.Config.DatabaseConnectors; +using mRemoteNG.Messages; + +namespace mRemoteNG.Config.Serializers.Versioning +{ + public class SqlVersion23To24Upgrader : IVersionUpgrader + { + private readonly SqlDatabaseConnector _sqlDatabaseConnector; + + public SqlVersion23To24Upgrader(SqlDatabaseConnector sqlDatabaseConnector) + { + if (sqlDatabaseConnector == null) + throw new ArgumentNullException(nameof(sqlDatabaseConnector)); + + _sqlDatabaseConnector = sqlDatabaseConnector; + } + + public bool CanUpgrade(Version currentVersion) + { + return currentVersion.CompareTo(new Version(2, 3)) == 0; + } + + public void Upgrade() + { + Runtime.MessageCollector.AddMessage(MessageClass.InformationMsg, "Upgrading database from version 2.3 to version 2.4."); + const string sqlText = @" +ALTER TABLE tblCons +ADD UseCredSsp bit NOT NULL DEFAULT 1, + InheritUseCredSsp bit NOT NULL DEFAULT 0;"; + var sqlCommand = new SqlCommand(sqlText, _sqlDatabaseConnector.SqlConnection); + sqlCommand.ExecuteNonQuery(); + } + } +} \ No newline at end of file diff --git a/mRemoteV1/Config/Serializers/Versioning/SqlVersion24To25Upgrader.cs b/mRemoteV1/Config/Serializers/Versioning/SqlVersion24To25Upgrader.cs new file mode 100644 index 000000000..ccfa6315d --- /dev/null +++ b/mRemoteV1/Config/Serializers/Versioning/SqlVersion24To25Upgrader.cs @@ -0,0 +1,39 @@ +using System; +using System.Data.SqlClient; +using mRemoteNG.App; +using mRemoteNG.Config.DatabaseConnectors; +using mRemoteNG.Messages; + +namespace mRemoteNG.Config.Serializers.Versioning +{ + public class SqlVersion24To25Upgrader : IVersionUpgrader + { + private readonly SqlDatabaseConnector _sqlDatabaseConnector; + + public SqlVersion24To25Upgrader(SqlDatabaseConnector sqlDatabaseConnector) + { + if (sqlDatabaseConnector == null) + throw new ArgumentNullException(nameof(sqlDatabaseConnector)); + + _sqlDatabaseConnector = sqlDatabaseConnector; + } + + public bool CanUpgrade(Version currentVersion) + { + return currentVersion.CompareTo(new Version(2, 4)) == 0; + } + + public void Upgrade() + { + Runtime.MessageCollector.AddMessage(MessageClass.InformationMsg, "Upgrading database from version 2.4 to version 2.5."); + const string sqlText = @" +ALTER TABLE tblCons +ADD LoadBalanceInfo varchar (1024) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + AutomaticResize bit NOT NULL DEFAULT 1, + InheritLoadBalanceInfo bit NOT NULL DEFAULT 0, + InheritAutomaticResize bit NOT NULL DEFAULT 0;"; + var sqlCommand = new SqlCommand(sqlText, _sqlDatabaseConnector.SqlConnection); + sqlCommand.ExecuteNonQuery(); + } + } +} \ No newline at end of file diff --git a/mRemoteV1/Config/Serializers/Versioning/SqlVersion25To26Upgrader.cs b/mRemoteV1/Config/Serializers/Versioning/SqlVersion25To26Upgrader.cs new file mode 100644 index 000000000..604fad5fa --- /dev/null +++ b/mRemoteV1/Config/Serializers/Versioning/SqlVersion25To26Upgrader.cs @@ -0,0 +1,43 @@ +using System; +using System.Data.SqlClient; +using mRemoteNG.App; +using mRemoteNG.Config.DatabaseConnectors; +using mRemoteNG.Messages; + +namespace mRemoteNG.Config.Serializers.Versioning +{ + public class SqlVersion25To26Upgrader : IVersionUpgrader + { + private readonly SqlDatabaseConnector _sqlDatabaseConnector; + + public SqlVersion25To26Upgrader(SqlDatabaseConnector sqlDatabaseConnector) + { + if (sqlDatabaseConnector == null) + throw new ArgumentNullException(nameof(sqlDatabaseConnector)); + + _sqlDatabaseConnector = sqlDatabaseConnector; + } + + public bool CanUpgrade(Version currentVersion) + { + return currentVersion.CompareTo(new Version(2, 5)) == 0; + } + + public void Upgrade() + { + Runtime.MessageCollector.AddMessage(MessageClass.InformationMsg, "Upgrading database from version 2.5 to version 2.6."); + const string sqlText = @" +ALTER TABLE tblCons +ADD RDPMinutesToIdleTimeout int NOT NULL DEFAULT 0, + RDPAlertIdleTimeout bit NOT NULL DEFAULT 0, + SoundQuality varchar (20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL DEFAULT 'Dynamic', + InheritRDPMinutesToIdleTimeout bit NOT NULL DEFAULT 0, + InheritRDPAlertIdleTimeout bit NOT NULL DEFAULT 0, + InheritSoundQuality bit NOT NULL DEFAULT 0; +UPDATE tblRoot + SET ConfVersion='2.6'"; + var sqlCommand = new SqlCommand(sqlText, _sqlDatabaseConnector.SqlConnection); + sqlCommand.ExecuteNonQuery(); + } + } +} \ No newline at end of file diff --git a/mRemoteV1/mRemoteV1.csproj b/mRemoteV1/mRemoteV1.csproj index b8c39a336..8bb389d57 100644 --- a/mRemoteV1/mRemoteV1.csproj +++ b/mRemoteV1/mRemoteV1.csproj @@ -159,6 +159,12 @@ + + + + + + @@ -289,7 +295,7 @@ - +