Exemple #1
0
        public MigrationResult SafeResolution()
        {
            var priorVersion = tracker.Version;
            var lastValidMigrationVersion = tracker.LastValidMigration == null ?  "" : tracker.LastValidMigration.Version;

            MigrateTo(lastValidMigrationVersion);
            tracker = databaseRepository.Create();
            Update();
            tracker = databaseRepository.Create();
            return(new MigrationResult(priorVersion, tracker.Version));
        }
Exemple #2
0
 public MigrationResult DirtyResolution()
 {
     //run all non-executed transactions
     var version = tracker.Version;
     foreach (var mig in tracker.UnexcutedMigrations)
     {
         databaseRepository.ExecuteUp(mig);
     }
     tracker = databaseRepository.Create();
     return new MigrationResult( version, tracker.Version);
 }
Exemple #3
0
        public MigrationResult DirtyResolution()
        {
            //run all non-executed transactions
            var version = tracker.Version;

            foreach (var mig in tracker.UnexcutedMigrations)
            {
                databaseRepository.ExecuteUp(mig);
            }
            tracker = databaseRepository.Create();
            return(new MigrationResult(version, tracker.Version));
        }
Exemple #4
0
 public void FromScratch()
 {
     //drop the database and execute all the ups
     if (databaseRepository.DatabaseExists())
     {
         databaseRepository.DropDatabase();
     }
     databaseRepository.CreateDatabaseIfNotExists();
     tracker =databaseRepository.Init();
     foreach (var mig in tracker.UnexcutedMigrations)
     {
         databaseRepository.ExecuteUp(mig);
     }
 }
Exemple #5
0
 public void FromScratch()
 {
     //drop the database and execute all the ups
     if (databaseRepository.DatabaseExists())
     {
         databaseRepository.DropDatabase();
     }
     databaseRepository.CreateDatabaseIfNotExists();
     tracker = databaseRepository.Init();
     foreach (var mig in tracker.UnexcutedMigrations)
     {
         databaseRepository.ExecuteUp(mig);
     }
 }
Exemple #6
0
        public MigrationResult Update()
        {
            if (!tracker.IsValidState())
            {
                throw new Exception("Database must be in a valid state in order to update it.");
            }
            if (!databaseRepository.DatabaseExists())
            {
                databaseRepository.Init();
            }
            var version = tracker.Version;

            foreach (var mig in tracker.UnexcutedMigrations)
            {
                databaseRepository.ExecuteUp(mig);
            }
            tracker = databaseRepository.Create();
            return(new MigrationResult("", version, tracker.Version));
        }
Exemple #7
0
 /// <summary>
 /// Only for test
 /// </summary>
 /// <param name="db"></param>
 /// <param name="dbLock"></param>
 /// <param name="upgrades"></param>
 /// <param name="initializer"></param>
 /// <param name="settings"></param>
 /// <param name="tracker"></param>
 /// <param name="logFactory"></param>
 public MongoMigrator(
     IMongoDatabase db,
     IMigrationChain upgrades,
     IUpgrade initializer,
     IUpgradeSettings settings,
     IDbLock dbLock,
     IMigrationTracker tracker,
     ILoggerFactory logFactory)
 {
     _log                     = logFactory.CreateLogger <MongoMigrator>();
     _logFactory              = logFactory;
     _db                      = db;
     _upgrades                = upgrades;
     _initializer             = initializer;
     _settings                = settings;
     _dbLock                  = dbLock;
     _tracker                 = tracker;
     _isTransactionsAvailable = _db.Client.Cluster.Description.Type > ClusterType.Standalone;
 }
Exemple #8
0
        public MigrationResult MigrateTo(string destinationVersion)
        {
            string originalVersion = tracker.Version;
            bool   isUp            = tracker.Version.CompareTo(destinationVersion) < 0;

            if (isUp && !tracker.IsValidState())
            {
                throw new Exception(
                          "Database must be in a valid state in order to use migrate in the up direction.  Try mite update instead.");
            }
            if (!databaseRepository.MigrationTableExists())
            {
                databaseRepository.Init();
            }
            if (isUp)
            {
                var migrationsToExecute =
                    tracker.UnexcutedMigrations.Where(x => x.Version.CompareTo(destinationVersion) <= 0);
                foreach (var mig in migrationsToExecute)
                {
                    databaseRepository.ExecuteUp(mig);
                }
            }
            else
            {
                var migrationsToExecute =
                    tracker.ExecutedMigrations.Where(x => x.Version.CompareTo(destinationVersion) > 0);
                foreach (var mig in migrationsToExecute)
                {
                    databaseRepository.ExecuteDown(mig);
                }
            }

            tracker = databaseRepository.Create();
            return(new MigrationResult("", originalVersion, tracker.Version));
        }
Exemple #9
0
        public MigrationResult MigrateTo(string destinationVersion)
        {
            string originalVersion = tracker.Version;
            bool isUp = tracker.Version.CompareTo(destinationVersion) < 0;
            if (isUp && !tracker.IsValidState())
                throw new Exception(
                    "Database must be in a valid state in order to use migrate in the up direction.  Try mite update instead.");
            if (!databaseRepository.MigrationTableExists())
                databaseRepository.Init();
            if (isUp)
            {
                var migrationsToExecute =
                    tracker.UnexcutedMigrations.Where(x => x.Version.CompareTo(destinationVersion) <= 0);
                foreach (var mig in migrationsToExecute)
                {
                    databaseRepository.ExecuteUp(mig);
                }
            }
            else
            {
                var migrationsToExecute =
                    tracker.ExecutedMigrations.Where(x => x.Version.CompareTo(destinationVersion) > 0);
                foreach (var mig in migrationsToExecute)
                {
                    databaseRepository.ExecuteDown(mig);
                }
            }

            tracker = databaseRepository.Create();
            return new MigrationResult( "", originalVersion, tracker.Version);
        }
Exemple #10
0
 public Migrator(IMigrationTracker tracker, IDatabaseRepository databaseRepository)
 {
     this.tracker = tracker;
     this.databaseRepository = databaseRepository;
 }
Exemple #11
0
 public MigrationResult Update()
 {
     if (!tracker.IsValidState())
         throw new Exception("Database must be in a valid state in order to update it.");
     if (!databaseRepository.DatabaseExists())
         databaseRepository.Init();
     var version = tracker.Version;
     foreach (var mig in tracker.UnexcutedMigrations)
     {
         databaseRepository.ExecuteUp(mig);
     }
     tracker = databaseRepository.Create();
     return new MigrationResult( "", version, tracker.Version);
 }
Exemple #12
0
 public MigrationResult SafeResolution()
 {
     var priorVersion = tracker.Version;
     var lastValidMigrationVersion = tracker.LastValidMigration  == null ?  "" : tracker.LastValidMigration.Version;
     MigrateTo(lastValidMigrationVersion);
     tracker = databaseRepository.Create();
     Update();
     tracker = databaseRepository.Create();
     return new MigrationResult(priorVersion, tracker.Version );
 }
Exemple #13
0
 public Migrator(IMigrationTracker tracker, IDatabaseRepository databaseRepository)
 {
     this.tracker            = tracker;
     this.databaseRepository = databaseRepository;
 }