SRoddis/Mongo.Migration

Database Migration downgrade

Closed this issue · 2 comments

Hi Team,,

I wanted advice on how to downgrade the Database Migration.
I applied first migration(0.0.1) then i wanted to downgrade, so in startup.cs i set DatabaseMigrationVersion to 0.0.0 and my currentversion(in _migration) is 0.0.1
But as per my understanding below code won't downgrade or run down method of 0.0.1 migration

Can you please advice.

private void MigrateDown(IMongoDatabase db, DocumentVersion currentVersion, DocumentVersion toVersion)
        {
            var migrations = _migrationLocator
                .GetMigrationsGtEq(DatabaseMigrationType, toVersion)
                .OrderByDescending(m => m.Version)
                .ToList();

            for (var m = 0; m < migrations.Count; m++)
            {
                var migration = migrations[m];
                if (migration.Version >= currentVersion)
                {
                    break;
                }

                _logger.LogInformation("Database Migration Down: {0}:{1} ", migration.GetType().ToString(), migration.Version);

                migration.Down(db);
                _databaseVersionService.Remove(db, migration);

                _logger.LogInformation("Database Migration Down finished successful: {0}:{1} ", migration.GetType().ToString(), migration.Version);
            }
        }

It should have been the same way as DocumentMigrationRunner's MigrateDown method as an example the method should be

private void MigrateDown(IMongoDatabase db, DocumentVersion toVersion)
       {
           var migrations = _migrationLocator
               .GetMigrationsGtEq(DatabaseMigrationType, toVersion)
               .OrderByDescending(m => m.Version)
               .ToList();

           for (var m = 0; m < migrations.Count; m++)
           {
               var migration = migrations[m];
               if (migration.Version == toVersion)
               {
                   break;
               }

               _logger.LogInformation("Database Migration Down: {0}:{1} ", migration.GetType().ToString(), migration.Version);

               migration.Down(db);
               _databaseVersionService.Remove(db, migration);

               _logger.LogInformation("Database Migration Down finished successful: {0}:{1} ", migration.GetType().ToString(), migration.Version);
           }
       }

I guess this is a bug but may be i am wrong here.

Hey @Gaurav-Puri101187 you are correct. This Bug came in with a PR.

I fixed the line to (migration.Version == toVersion).

Thank you for the bug report.

Cheers, Sean