Ejemplo n.º 1
0
        public override void ConnectToDatabase(string connectionstring, string migratorName, bool validateTables)
        {
            m_connectionString = connectionstring;
            MySqlConnection c = new MySqlConnection(connectionstring);
            int subStrA = connectionstring.IndexOf("Database=");
            int subStrB = connectionstring.IndexOf(";", subStrA);
            string noDatabaseConnector = m_connectionString.Substring(0, subStrA) +
                                         m_connectionString.Substring(subStrB + 1);

            retry:
            try
            {
                ExecuteNonQuery(noDatabaseConnector, "create schema IF NOT EXISTS " + c.Database,
                                new Dictionary<string, object>(), false);
            }
            catch
            {
                MainConsole.Instance.Error(
                    "[MySQLDatabase]: We cannot connect to the MySQL instance you have provided. Please make sure it is online, and then press enter to try again.");
                Console.Read();
                goto retry;
            }

            var migrationManager = new MigrationManager(this, migratorName, validateTables);
            migrationManager.DetermineOperation();
            migrationManager.ExecuteOperation();
        }
Ejemplo n.º 2
0
        public override void ConnectToDatabase(string connectionstring, string migratorName, bool validateTables)
        {
            m_connectionString = connectionstring;

            var migrationManager = new MigrationManager (this, migratorName, validateTables);
            migrationManager.DetermineOperation ();
            migrationManager.ExecuteOperation ();
        }
Ejemplo n.º 3
0
        public override void ConnectToDatabase(string connectionString)
        {
            m_Connection = new SqliteConnection(connectionString);
            m_Connection.Open();

            var migrationManager = new MigrationManager(DataSessionProviderConnector.DataSessionProvider, this);
            migrationManager.DetermineOperation();
            migrationManager.ExecuteOperation();
        }
Ejemplo n.º 4
0
 public override void ConnectToDatabase(string connectionString, string migratorName, bool validateTables)
 {
     connectionString = connectionString.Replace("URI=file:", "URI=file:" + Util.BasePathCombine("") + "/");
     m_Connection = new SqliteConnection(connectionString);
     m_Connection.Open();
     var migrationManager = new MigrationManager(this, migratorName, validateTables);
     migrationManager.DetermineOperation();
     migrationManager.ExecuteOperation();
 }
Ejemplo n.º 5
0
        public override void ConnectToDatabase(string connectionstring)
        {
            connectionString = connectionstring;
            MySqlConnection dbcon = GetLockedConnection();
            CloseDatabase(dbcon);

            var migrationManager = new MigrationManager(DataSessionProviderConnector.DataSessionProvider, this);
            migrationManager.DetermineOperation();
            migrationManager.ExecuteOperation();
        }
        public void MigrationTestsTests()
        {
            //IMPORTANT NOTIFICATION
            //Till I figure out a way, please delete the .db file or drop tables clean before running this

            //Switch the comments to test one technology or another
            var technology = DataManagerTechnology.SQLite;
            //var technology = DataManagerTechnology.MySql;

            var mysqlconnectionstring = "Data Source=localhost;Database=auroratest;User ID=auroratest;Password=test;";
            var sqliteconnectionstring = string.Format("URI=file:{0},version=3", dbFileName);
            string connectionString = (technology==DataManagerTechnology.SQLite)?sqliteconnectionstring:mysqlconnectionstring;

            CreateEmptyDatabase();
            DataSessionProvider sessionProvider = new DataSessionProvider(technology, connectionString);
            IDataConnector genericData = ((technology==DataManagerTechnology.SQLite)? (IDataConnector) new SQLiteLoader():new MySQLDataLoader());

            genericData.ConnectToDatabase(connectionString);

            var migrators = new List<Migrator>();
            var testMigrator0 = new TestMigrator();
            migrators.Add(testMigrator0);

            var migrationManager = new MigrationManager(sessionProvider, genericData, migrators);
            Assert.AreEqual(testMigrator0.Version, migrationManager.LatestVersion, "Latest version is correct");
            Assert.IsNull(migrationManager.GetDescriptionOfCurrentOperation(),"Description should be null before deciding what to do.");
            migrationManager.DetermineOperation();
            var operationDescription = migrationManager.GetDescriptionOfCurrentOperation();
            Assert.AreEqual(MigrationOperationTypes.CreateDefaultAndUpgradeToTarget, operationDescription.OperationType, "Operation type is correct.");
            Assert.AreEqual(testMigrator0.Version, operationDescription.CurrentVersion, "Current version is correct");
            //There will be no migration because there is only one migrator which will provide the default
            Assert.IsNull(operationDescription.StartVersion, "Start migration version is correct");
            Assert.IsNull(operationDescription.EndVersion, "End migration version is correct");
            try
            {
                migrationManager.ExecuteOperation();
                Assert.AreEqual(testMigrator0.Version, genericData.GetAuroraVersion(), "Version of settings is updated");
            }
            catch(MigrationOperationException)
            {
                Assert.Fail("Something failed during execution we weren't expecting.");
            }
            bool valid = migrationManager.ValidateVersion(migrationManager.LatestVersion);
            Assert.AreEqual(true,valid,"Database is a valid version");

            migrationManager.DetermineOperation();
            var operationDescription2 = migrationManager.GetDescriptionOfCurrentOperation();
            Assert.AreEqual(MigrationOperationTypes.DoNothing, operationDescription2.OperationType, "Operation type is correct.");
            Assert.AreEqual(testMigrator0.Version, operationDescription2.CurrentVersion, "Current version is correct");
            Assert.IsNull(operationDescription2.StartVersion, "Start migration version is correct");
            Assert.IsNull(operationDescription2.EndVersion, "End migration version is correct");
            migrationManager.ExecuteOperation();

            genericData.CloseDatabase();
        }
Ejemplo n.º 7
0
 public override void ConnectToDatabase(string connectionString, string migratorName, bool validateTables)
 {
     string[] s1 = connectionString.Split(new[] { "Data Source=", "," }, StringSplitOptions.RemoveEmptyEntries);
     if (Path.GetFileName(s1[0]) == s1[0]) //Only add this if we arn't an absolute path already
         connectionString = connectionString.Replace("Data Source=", "Data Source=" + Util.BasePathCombine("") + "\\");
     m_Connection = new SQLiteConnection(connectionString);
     m_Connection.Open();
     var migrationManager = new MigrationManager(this, migratorName, validateTables);
     migrationManager.DetermineOperation();
     migrationManager.ExecuteOperation();
 }
Ejemplo n.º 8
0
        public override void ConnectToDatabase(string connectionstring, string migratorName, bool validateTables)
        {
            connectionString = connectionstring;
            SqlConnection dbcon = GetLockedConnection();
            dbcon.Close();
            dbcon.Dispose();

            var migrationManager = new MigrationManager(this, migratorName, validateTables);
            migrationManager.DetermineOperation();
            migrationManager.ExecuteOperation();
        }
Ejemplo n.º 9
0
        public override void ConnectToDatabase(string connectionstring, string migratorName, bool validateTables)
        {
            m_connectionString = connectionstring;
            MySqlConnection c = new MySqlConnection(connectionstring);
            int subStrA = connectionstring.IndexOf("Database=");
            int subStrB = connectionstring.IndexOf(";", subStrA);
            string noDatabaseConnector = m_connectionString.Substring(0, subStrA) + m_connectionString.Substring(subStrB+1);

            ExecuteNonQuery(noDatabaseConnector, "create schema IF NOT EXISTS " + c.Database, new Dictionary<string, object>());

            var migrationManager = new MigrationManager(this, migratorName, validateTables);
            migrationManager.DetermineOperation();
            migrationManager.ExecuteOperation();
        }
Ejemplo n.º 10
0
        public override void ConnectToDatabase(string connectionString, string migratorName, bool validateTables)
        {
            _connectionString = connectionString;
            string[] s1 = _connectionString.Split(new[] {"Data Source=", ","}, StringSplitOptions.RemoveEmptyEntries);

            s1[0] = s1[0].Remove(0, 7);

            _fileName = Path.GetFileName(s1[0]);
            if (_fileName == s1[0]) //Only add this if we arn't an absolute path already
                _connectionString = string.Format("Data Source=file://{0}", Path.Combine(Util.BasePathCombine(""), _fileName));

            SqliteConnection connection = new SqliteConnection(_connectionString);
            connection.Open();
            var migrationManager = new MigrationManager(this, migratorName, validateTables);
            migrationManager.DetermineOperation();
            migrationManager.ExecuteOperation();
            connection.Close();
        }
Ejemplo n.º 11
0
        public override void ConnectToDatabase(string connectionString, string migratorName, bool validateTables)
        {
            _connectionString = connectionString;
            string[] s1 = _connectionString.Split(new[] { "Data Source=", "," }, StringSplitOptions.RemoveEmptyEntries);
            bool needsUTFConverted = false;
            _fileName = Path.GetFileName(s1[0]);
            if (s1[0].EndsWith(";"))
            {
                _fileName = Path.GetFileNameWithoutExtension(s1[1].Substring(7, s1[1].Length - 7)) + "utf8.db";
                _connectionString = "Data Source=file://" + _fileName;
                s1 = new string[1] { "file://" + _fileName };
                needsUTFConverted = true;
                _hadToConvert = true;
            }
            if (_fileName == s1[0]) //Only add this if we arn't an absolute path already
                _connectionString = _connectionString.Replace("Data Source=", "Data Source=" + Util.BasePathCombine("") + "\\");
            SqliteConnection connection = new SqliteConnection(_connectionString);
            connection.Open();
            var migrationManager = new MigrationManager(this, migratorName, validateTables);
            migrationManager.DetermineOperation();
            migrationManager.ExecuteOperation();
            connection.Close();

            if (needsUTFConverted && _hadToConvert)
            {
                string file = connectionString.Split(new[] { "Data Source=", "," }, StringSplitOptions.RemoveEmptyEntries)[1].Substring(7);
                if (File.Exists(file))
                {
                    //UTF16 db, gotta convert it
                    System.Data.SQLite.SQLiteConnection conn = new System.Data.SQLite.SQLiteConnection("Data Source=" + file + ";version=3;UseUTF16Encoding=True");
                    conn.Open();
                    var RetVal = new List<string>();
                    using (var cmd = new System.Data.SQLite.SQLiteCommand("SELECT name FROM Sqlite_master", conn))
                    {
                        using (IDataReader rdr = cmd.ExecuteReader())
                        {
                            while (rdr.Read())
                            {
                                for (int i = 0; i < rdr.FieldCount; i++)
                                {
                                    RetVal.Add(rdr.GetValue(i).ToString());
                                }
                            }
                        }
                    }
                    foreach (string table in RetVal)
                    {
                        if (TableExists(table) && !table.StartsWith("sqlite") && !table.StartsWith("idx_") && table != "aurora_migrator_version")
                        {
                            var retVal = new List<object[]>();
                            using (var cmd = new System.Data.SQLite.SQLiteCommand("SELECT * FROM " + table, conn))
                            {
                                using (IDataReader reader = cmd.ExecuteReader())
                                {
                                    while (reader.Read())
                                    {
                                        List<object> obs = new List<object>();
                                        for (int i = 0; i < reader.FieldCount; i++)
                                        {
                                            Type r = reader[i].GetType();
                                            if (r == typeof(DBNull))
                                                obs.Add(null);
                                            else
                                                obs.Add(reader[i].ToString());
                                        }
                                        retVal.Add(obs.ToArray());
                                    }
                                }
                            }
                            try
                            {
                                if(retVal.Count > 0)
                                    InsertMultiple(table, retVal);
                            }
                            catch { }
                        }
                    }
                }
            }
        }