Beispiel #1
0
 public AutomaticMigration(IAccessDb db, IManageMigrations migrations, ILogWriter logger)
 {
     _db = db;
     _migrations = migrations;
     _runner=new MigrationTaskRunner(db,logger);
     UpdateSelf();
 }
Beispiel #2
0
 public MigrationsManager(IEnumerable <IMigrateSchema> schemas, IRunMigrations runner)
 {
     schemas.MustNotBeNull();
     schemas.ForEach(s => s.Runner = runner);
     _schemas = Sort(schemas);
     _runner  = runner;
 }
        public SchemaMigrationExecutor(IRunMigrations runner,IEnumerable<IMigrationTask> tasks,string schemaName)
        {
            runner.MustNotBeNull();
            tasks.MustNotBeNull();
            schemaName.MustNotBeEmpty();

            if (tasks.Any(t => t.SchemaName != schemaName)) throw new ArgumentException("Some of the provided tasks don't belong to the specified schema");
            _runner = runner;
            _tasks = tasks;
            SchemaName = schemaName;

            var late = _tasks.FirstOrDefault(t =>t.CurrentVersion!=null && t.NextVersion == null);
            if (late!=null)
            {
                _latest = late.CurrentVersion.ToString();
                Priority = late.Priority;
            }
            var lateUpgrade = _tasks.Where(d => d.NextVersion != null).Max(d => d.NextVersion);
            if (lateUpgrade!=null)
            {
                _latest = lateUpgrade.CompareTo(late.CurrentVersion) > 0
                              ? lateUpgrade.ToString()
                              : late.CurrentVersion.ToString();
            }
        }
Beispiel #4
0
 public AutomaticMigration(DbConnection db, IManageMigrations migrations, ILogWriter logger)
 {
     _db         = db;
     _migrations = migrations;
     _runner     = new MigrationTaskRunner(db, logger);
     UpdateSelf();
 }
        public SchemaMigrationExecutor(IRunMigrations <TDatabase> runner, IEnumerable <IMigrationTask <TDatabase> > tasks, string schemaName)
        {
            runner.MustNotBeNull();
            tasks.MustNotBeNull();
            schemaName.MustNotBeEmpty();

            if (tasks.Any(t => t.SchemaName != schemaName))
            {
                throw new ArgumentException("Some of the provided tasks don't belong to the specified schema");
            }
            _runner    = runner;
            _tasks     = tasks;
            SchemaName = schemaName;

            var late = _tasks.FirstOrDefault(t => t.CurrentVersion != null && t.NextVersion == null);

            if (late != null)
            {
                _latest  = late.CurrentVersion.ToString();
                Priority = late.Priority;
            }
            var lateUpgrade = _tasks.Where(d => d.NextVersion != null).Max(d => d.NextVersion);

            if (lateUpgrade != null)
            {
                _latest = lateUpgrade.CompareTo(late.CurrentVersion) > 0
                              ? lateUpgrade.ToString()
                              : late.CurrentVersion.ToString();
            }
        }
Beispiel #6
0
 public MigrationsManager(IEnumerable<IMigrateSchema> schemas, IRunMigrations runner)
 {
     schemas.MustNotBeNull();
     schemas.ForEach(s => s.Runner = runner);
     _schemas = Sort(schemas);
     _runner = runner;
 }
        // internal const string TableName = "MigrationTracker";
        // internal const string SchemaName = "AutomaticMigration";

        public AutomaticMigration(TDatabase db, IAutomaticMigrationRepository <TDatabase> repository, IUnitOfWorkCreator <TDatabase> unitOfWorkCreator, IManageMigrations <TDatabase> migrations, TextWriter logger)
        {
            _db                = db;
            _repository        = repository;
            _migrations        = migrations;
            _unitOfWorkCreator = unitOfWorkCreator;
            _log               = logger;
            _runner            = new MigrationTaskRunner <TDatabase>(db, logger);

            UpdateSelf();
        }
Beispiel #8
0
        private IEnumerable <IMigrateSchema> GetSchemaExecutors(IEnumerable <IMigrationTask> tasks, IRunMigrations runner)
        {
            var groups = tasks.GroupBy(t => t.SchemaName);

            foreach (var group in groups)
            {
                yield return(new SchemaMigrationExecutor(runner, group, group.Key));
            }
        }