Esempio n. 1
0
        public void InitializeDatabase()
        {
            var migrator = new SimpleMigrator(typeof(DatabaseInitializer).Assembly,
                                              new PostgresqlDatabaseProvider(_con));

            migrator.Load();
            migrator.MigrateTo(1);
            migrator.MigrateToLatest();
        }
Esempio n. 2
0
        public void Migrate(string[] args)
        {
            var options          = Cli.Parse <MigrateOptions>(args);
            var connectionString = $"SslMode=none;Server={options.Host};Port={options.Port};Database={options.Database};Uid={options.User};Pwd={options.Password};";

            using (var con = new MySqlConnection(connectionString))
            {
                con.Open();
                var databaseProvider = new MysqlDatabaseProvider(con)
                {
                    TableName = "__version"
                };
                AssemblyMigrationProvider assemblyProvider = null;
                switch (options.Schema.ToLower())
                {
                case "auth":
                    assemblyProvider = new AssemblyMigrationProvider(s_authType.Assembly, s_authType.Namespace);
                    break;

                case "game":
                    assemblyProvider = new AssemblyMigrationProvider(s_gameType.Assembly, s_gameType.Namespace);
                    break;

                default:
                    Error("Invalid schema");
                    break;
                }

                try
                {
                    var migrator = new SimpleMigrator(assemblyProvider, databaseProvider, new ConsoleLogger());
                    migrator.Load();
                    if (options.CurrentVersion > 0)
                    {
                        migrator.Baseline(options.CurrentVersion);
                    }

                    if (options.Version == 0)
                    {
                        migrator.MigrateToLatest();
                    }
                    else
                    {
                        migrator.MigrateTo(options.Version);
                    }
                }
                catch (MigrationNotFoundException ex)
                {
                    Error(ex.Message);
                }
            }
        }
Esempio n. 3
0
        public void DowngradeDataBase()
        {
            int versionTo = 0;

            using (var connection = new NpgsqlConnection(cnn))
            {
                var databaseProvider = new PostgresqlDatabaseProvider(connection);
                var migrator         = new SimpleMigrator(assemblyTo, databaseProvider);

                // carregar todos os estados de versões da base de dados.
                migrator.Load();

                // a versão da db atual deve ser maior que a versão versionTo.
                if (migrator.CurrentMigration.Version > versionTo)
                {
                    // versão da db para qual deseja voltar.
                    migrator.MigrateTo(versionTo);
                }

                Assert.IsTrue(migrator.CurrentMigration.Version == migrator.LatestMigration.Version);
            }
        }
Esempio n. 4
0
        private static void ExecuteMigrations(IDbConnection connection, string[] args)
        {
            if (connection == null)
            {
                return;
            }
            using (var conn = connection)
            {
                var databaseProvider = new SqlDatabaseProvider(conn);

                var migrator = new SimpleMigrator <IDbConnection, BaseMigration>(Assembly.GetCallingAssembly(), databaseProvider);

                try
                {
                    if (args == null || args.Length == 0)
                    {
                        migrator.Load();
                        if (RollbackVersion.HasValue && RollbackVersion > 0)
                        {
                            migrator.MigrateTo(RollbackVersion.Value);
                        }

                        if (MigrateToLatest)
                        {
                            migrator.MigrateToLatest();
                        }
                    }
                    else
                    {
                        var console = new ConsoleRunner(migrator);
                        console.Run(args);
                    }
                }
                catch
                {
                    throw;
                }
            }
        }
Esempio n. 5
0
        public void RunMigrations(DbService db)
        {
            var migrationsAssembly = typeof(Startup).Assembly;

            using (var pg = db.CreateConnection(longTimeout: true))
            {
                var databaseProvider = new PostgresqlDatabaseProvider(pg);
                var migrator         = new SimpleMigrator(migrationsAssembly, databaseProvider);
                migrator.Load();

                if (migrator.CurrentMigration == null || migrator.CurrentMigration.Version == 0)
                {
                    migrator.Baseline(2);
                }

                migrator.MigrateTo(5);

                if (migrator.LatestMigration.Version != migrator.CurrentMigration.Version)
                {
                    throw new Exception($"The newest available migration ({migrator.LatestMigration.Version}) != The current database migration ({migrator.CurrentMigration.Version}). You probably need to add a call to run the migration.");
                }
            }
        }
        public static void Main(string[] args)
        {
            var connectionString    = @"Data Source=LT-17-623\SQL17;Initial Catalog=ASPNetCoreTest;Persist security info=True;Integrated Security=SSPI";
            var migrateCommandText  = "migrate";
            var rollBackCommandText = "rollback";
            var versionCommand      = "-v";

            Console.WriteLine("MigratonRunner commands");
            Console.WriteLine();
            Console.WriteLine("migrate");
            Console.WriteLine("migrate -v <VERSION>");
            Console.WriteLine("rollback");
            Console.WriteLine("rollback -v <VERSION>");
            Console.WriteLine();
            Console.WriteLine("ENTER COMMAND");
            Console.WriteLine();

            using (var connection = new SqlConnection(connectionString))
            {
                var databaseProvider = new MssqlDatabaseProvider(connection);
                var migrator         = new SimpleMigrator(Assembly.Load(new AssemblyName("Migrations.Sql")), databaseProvider);
                migrator.Load();

                var newMigrations = migrator.Migrations.Where(x => x.Version > migrator.CurrentMigration.Version);

                if (newMigrations.Any())
                {
                    Console.WriteLine("There are new migrations");
                    Console.ForegroundColor = ConsoleColor.Green;

                    foreach (var migration in newMigrations.OrderBy(x => x.Version))
                    {
                        Console.WriteLine(migration.Version.ToString() + "-" + migration.Description);
                    }

                    Console.ResetColor();
                }
                else
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("There are no new migrations");
                    Console.ResetColor();
                }
            }


            var commandText = Console.ReadLine();

            if (commandText.ToLower().Contains(migrateCommandText))
            {
                if (commandText.ToLower().Contains(versionCommand))
                {
                    string version = commandText.Substring(commandText.IndexOf(versionCommand) + versionCommand.Length + 1);
                    long   versionLong;
                    var    castedToLong = long.TryParse(version, out versionLong);

                    if (castedToLong)
                    {
                        using (var connection = new SqlConnection(connectionString))
                        {
                            var databaseProvider = new MssqlDatabaseProvider(connection);
                            var migrator         = new SimpleMigrator(Assembly.Load(new AssemblyName("Migrations.Sql")), databaseProvider);
                            migrator.Load();
                            migrator.MigrateTo(versionLong);
                        }
                        Console.WriteLine("migrate database to the version " + version + " !");
                        Console.ReadKey();
                    }
                }
                else
                {
                    using (var connection = new SqlConnection(connectionString))
                    {
                        var databaseProvider = new MssqlDatabaseProvider(connection);
                        var migrator         = new SimpleMigrator(Assembly.Load(new AssemblyName("Migrations.Sql")), databaseProvider);
                        migrator.Load();
                        migrator.MigrateToLatest();
                    }
                    Console.WriteLine("migrate database to latest version");
                    Console.ReadKey();
                }
            }
            else if (commandText.ToLower().Contains(rollBackCommandText))
            {
                if (commandText.ToLower().Contains(versionCommand))
                {
                    string version = commandText.Substring(commandText.IndexOf(versionCommand) + versionCommand.Length + 1);
                    long   versionLong;
                    var    castedToLong = long.TryParse(version, out versionLong);

                    if (castedToLong)
                    {
                        using (var connection = new SqlConnection(connectionString))
                        {
                            var databaseProvider = new MssqlDatabaseProvider(connection);
                            var migrator         = new SimpleMigrator(Assembly.Load(new AssemblyName("Migrations.Sql")), databaseProvider);
                            migrator.Load();
                            migrator.MigrateTo(versionLong);
                        }
                        Console.WriteLine("rollback database to the version " + version + " !");
                        Console.ReadKey();
                    }
                }
                else
                {
                    Console.WriteLine("Are you sure? y/n");
                    var rollbackResp = Console.ReadLine();
                    if (rollbackResp.Contains("y"))
                    {
                        using (var connection = new SqlConnection(connectionString))
                        {
                            var databaseProvider = new MssqlDatabaseProvider(connection);
                            var migrator         = new SimpleMigrator(Assembly.Load(new AssemblyName("Migrations.Sql")), databaseProvider);
                            migrator.Load();
                            migrator.MigrateTo(0);
                        }
                        Console.WriteLine("rollback database!");
                        Console.ReadKey();
                    }
                    else
                    {
                        Console.WriteLine("rollback canceled!");
                        Console.ReadKey();
                    }
                }
            }
            else
            {
                Console.WriteLine("Command not found, please write migrate or rollback");
                Console.ReadKey();
            }
        }