mirror of
https://github.com/mRemoteNG/mRemoteNG.git
synced 2026-02-17 22:11:48 +08:00
* Uses MySQL Connector/NET from nuget * Adds SQL Server type to configuration. * Hostname for MySQL connections can include port - Format: <hostname>[:<port>] * Abstracted a bundle of stuff to be generic for both MSSQL and MySQL, including a number of variable and method names. (Mostly went from "sql..." -> "db..." * Changed MiscTools.DBDate() string building for MSSQL, uses DateTime.ToString() with a format which seemed simpler. * Unsure about which lines in .csproj are actually required, and which are auto-munged by Visual Studio. * ... This is my first C# (and VS!) work, be gentle! Signed-off-by: Mike Beattie <mike@ethernal.org>
70 lines
2.5 KiB
C#
70 lines
2.5 KiB
C#
using mRemoteNG.App;
|
|
using mRemoteNG.App.Info;
|
|
using mRemoteNG.Config.DatabaseConnectors;
|
|
using mRemoteNG.Messages;
|
|
using System;
|
|
|
|
namespace mRemoteNG.Config.Serializers.Versioning
|
|
{
|
|
public class SqlDatabaseVersionVerifier
|
|
{
|
|
private readonly IDatabaseConnector _databaseConnector;
|
|
|
|
public SqlDatabaseVersionVerifier(IDatabaseConnector DatabaseConnector)
|
|
{
|
|
if (DatabaseConnector == null)
|
|
throw new ArgumentNullException(nameof(DatabaseConnector));
|
|
|
|
_databaseConnector = DatabaseConnector;
|
|
}
|
|
|
|
public bool VerifyDatabaseVersion(Version dbVersion)
|
|
{
|
|
var isVerified = false;
|
|
try
|
|
{
|
|
var databaseVersion = dbVersion;
|
|
|
|
if (databaseVersion.Equals(new Version()))
|
|
{
|
|
return true;
|
|
}
|
|
|
|
var dbUpgraders = new IVersionUpgrader[]
|
|
{
|
|
new SqlVersion22To23Upgrader(_databaseConnector),
|
|
new SqlVersion23To24Upgrader(_databaseConnector),
|
|
new SqlVersion24To25Upgrader(_databaseConnector),
|
|
new SqlVersion25To26Upgrader(_databaseConnector),
|
|
new SqlVersion26To27Upgrader(_databaseConnector),
|
|
};
|
|
|
|
foreach (var upgrader in dbUpgraders)
|
|
{
|
|
if (upgrader.CanUpgrade(databaseVersion))
|
|
{
|
|
databaseVersion = upgrader.Upgrade();
|
|
}
|
|
}
|
|
|
|
// DB is at the highest current supported version
|
|
if (databaseVersion.CompareTo(new Version(2, 7)) == 0)
|
|
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;
|
|
}
|
|
}
|
|
} |