예제 #1
0
        /// <summary>
        /// Creates a new instance of MigrationRunner
        /// </summary>
        /// <param name="url">MongoDb connection string</param>
        /// <param name="migrationAssembly">Assembly with migrations</param>
        public MigrationRunner(MongoUrl url, string migrationAssembly)
        {
            _dbMigrations = new DatabaseMigrations(url);
            _locator      = new MigrationLocator(migrationAssembly, _dbMigrations.GetDatabase());

            _migrationAssembly = migrationAssembly;
        }
 public MigrationExecutor(IMigrationLocator migrationLocator, IMigrationStore migrationStore, ILogger <MigrationExecutor> logger, IServiceProvider serviceProvider)
 {
     this.migrationLocator = migrationLocator ?? throw new ArgumentNullException(nameof(migrationLocator));
     this.migrationStore   = migrationStore ?? throw new ArgumentNullException(nameof(migrationStore));
     this.logger           = logger ?? throw new ArgumentNullException(nameof(logger));
     this.serviceProvider  = serviceProvider ?? throw new ArgumentNullException(nameof(serviceProvider));
 }
예제 #3
0
        /// <summary>
        /// Use the migration locator to derive what migrations should be executed.
        /// Compare the migrations to be executed against the migrations applied to the repository.
        /// Synchronously apply the migrations that were not applied to the repository to migrate in ascending order.
        /// </summary>
        /// <param name="migrationLocator">The migration locator</param>
        /// <param name="repository">The migration repository</param>
        /// <param name="repositoryToMigrate">The repository to apply the migrations to.</param>
        public static void UpdateToLatest(
            IMigrationLocator migrationLocator,
            IRepository repository,
            IRepositoryToMigrate repositoryToMigrate)
        {
            MigrationSession migrationSession;

            if (MigrationSessionHelpers.TryStartMigrationSession(
                    repository.AddMigrationSession,
                    MigrationSessionHelpers.MigrationSessionIsAvailableToExecute(repository.GetMigrationSessions()),
                    MigrationHelpers.GetMigrationsToBeAppliedAscending(
                        MigrationHelpers.GetMaxVersionOrDefault(repository.GetMigrations()),
                        migrationLocator.GetAllMigrations()),
                    out migrationSession))
            {
                try
                {
                    UpdateTo(
                        repositoryToMigrate,
                        repository,
                        migrationSession);
                    MigrationSessionHelpers.CompleteMigrationSession(
                        repository.UpsertMigrationSession,
                        migrationSession);
                }
                catch (MigrationException migrationException)
                {
                    MigrationSessionHelpers.FailMigrationSession(
                        repository.UpsertMigrationSession,
                        migrationSession,
                        migrationException);
                    throw migrationException;
                }
            }
        }
예제 #4
0
 public Application(IMigrationLocator migrationLocator, IVersionLocator versionLocator,
                    IMigrationStrategy migrationStrategy)
 {
     _migrationLocator  = migrationLocator;
     _versionLocator    = versionLocator;
     _migrationStrategy = migrationStrategy;
 }
        /// <summary>
        /// Creates a new instance of <seealso cref="MigrationRunner" />
        /// </summary>
        /// <param name="connectionString">The Mongo connection string in form of mongodb://host:port/database</param>
        /// <param name="migrationAssembly">The target assembly containing migrations.</param>
        /// <param name="logger">Logger for logging</param>
        public MigrationRunner(string connectionString, Assembly migrationAssembly, ILogger logger = null)
        {
            var url = MongoUrl.Create(connectionString);

            _dbMigrations = new DatabaseMigrations(url);
            _locator      = new MigrationLocator(migrationAssembly, _dbMigrations.GetDatabase(), new MigrationFactory());
            _logger       = logger;
        }
예제 #6
0
 /// <summary>
 /// Use the migration locator to derive what migrations should be executed.
 /// Compare the migrations to be executed against the migrations applied to the repository.
 /// Synchronously apply the migrations that were not applied to the repository in ascending order.
 /// </summary>
 /// <param name="migrationLocator">The migration locator</param>
 /// <param name="repository">The migration repository and the repository to apply the migrations to.</param>
 public static void UpdateToLatest(
     IMigrationLocator migrationLocator,
     IRepository repository)
 {
     UpdateToLatest(
         migrationLocator,
         repository,
         repository as IRepositoryToMigrate);
 }
예제 #7
0
 public MongoMigration(IMigrationLocator migrationLocator, IRuntimeVersionLocator runtimeVersionLocator,
                       ICollectionLocator collectionLocator, IStartUpVersionLocator startUpVersionLocator, IMigrationService migrationService)
 {
     _migrationLocator      = migrationLocator;
     _runtimeVersionLocator = runtimeVersionLocator;
     _collectionLocator     = collectionLocator;
     _startUpVersionLocator = startUpVersionLocator;
     _migrationService      = migrationService;
 }
예제 #8
0
 public VersionService(
     IMigrationLocator migrationLocator,
     IRuntimeVersionLocator runtimeVersionLocator,
     IStartUpVersionLocator startUpVersionLocator,
     IOptions <MongoMigrationSettings> mongoMigrationSettings)
 {
     _migrationLocator      = migrationLocator;
     _runtimeVersionLocator = runtimeVersionLocator;
     _startUpVersionLocator = startUpVersionLocator;
     _versionFieldName      = string.IsNullOrWhiteSpace(mongoMigrationSettings.Value.VersionFieldName)
         ? VERSION_FIELD_NAME
         : mongoMigrationSettings.Value.VersionFieldName;
 }
 public DocumentVersionService(
     IMigrationLocator <IDocumentMigration> migrationLocator,
     IRuntimeVersionLocator runtimeVersionLocator,
     IStartUpVersionLocator startUpVersionLocator,
     IMongoMigrationSettings mongoMigrationSettings)
 {
     _migrationLocator      = migrationLocator;
     _runtimeVersionLocator = runtimeVersionLocator;
     _startUpVersionLocator = startUpVersionLocator;
     _versionFieldName      = string.IsNullOrWhiteSpace(mongoMigrationSettings.VersionFieldName)
         ? VERSION_FIELD_NAME
         : mongoMigrationSettings.VersionFieldName;
 }
예제 #10
0
 public MongoMigration(
     IMigrationLocator <IDocumentMigration> documentMigrationLocator,
     IDatabaseTypeMigrationDependencyLocator databaseMigrationLocator,
     IRuntimeVersionLocator runtimeVersionLocator,
     ICollectionLocator collectionLocator,
     IStartUpVersionLocator startUpVersionLocator,
     IMigrationService migrationService)
 {
     _documentMigrationLocator = documentMigrationLocator;
     _databaseMigrationLocator = databaseMigrationLocator;
     _runtimeVersionLocator    = runtimeVersionLocator;
     _collectionLocator        = collectionLocator;
     _startUpVersionLocator    = startUpVersionLocator;
     _migrationService         = migrationService;
 }
예제 #11
0
 public MigrationRunner(IMigrationLocator migrationLocator, IVersionLocator versionLocator)
 {
     _migrationLocator = migrationLocator;
     _versionLocator   = versionLocator;
 }
예제 #12
0
 public DocumentMigrationRunner(IMigrationLocator <IDocumentMigration> migrationLocator, IDocumentVersionService documentVersionService)
 {
     _migrationLocator       = migrationLocator;
     _documentVersionService = documentVersionService;
 }
예제 #13
0
 public MigrationRunner(IMigrationLocator migrationLocator, IVersionService versionService)
 {
     _migrationLocator = migrationLocator;
     _versionService   = versionService;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="MigrationRunner" /> class.
 /// </summary>
 /// <param name="migrationTarget">The migration target.</param>
 /// <param name="database">The database.</param>
 /// <param name="migrationLocator">The migration locator.</param>
 /// <param name="databaseStatus">The database status.</param>
 /// <param name="logger">The logger.</param>
 public MigrationRunner(IMigrationTarget migrationTarget, IMongoDatabase database, IMigrationLocator migrationLocator, IDatabaseMigrationStatus databaseStatus, ILogger <MigrationRunner> logger)
 {
     _migrationTarget = migrationTarget ?? throw new ArgumentNullException(nameof(migrationTarget));
     _database        = database ?? throw new ArgumentNullException(nameof(database));
     _databaseStatus  = databaseStatus ?? throw new ArgumentNullException(nameof(databaseStatus));
     _logger          = logger ?? throw new ArgumentNullException(nameof(logger));
     MigrationLocator = migrationLocator ?? throw new ArgumentNullException(nameof(migrationLocator));
 }
예제 #15
0
 /// <summary>
 /// Creates a new instance of MigrationRunner
 /// </summary>
 /// <param name="database">MongoDb IMongoDatabase instance</param>
 /// <param name="migrationAssembly">Assembly with migrations</param>
 /// <param name="factory">Factory responsible for instantiating migrations</param>
 public MigrationRunner(IMongoDatabase database, string migrationAssembly, IMigrationFactory factory = null)
 {
     _dbMigrations      = new DatabaseMigrations(database);
     _locator           = new MigrationLocator(migrationAssembly, database, factory ?? new MigrationFactory());
     _migrationAssembly = migrationAssembly;
 }
예제 #16
0
 public VersionService(IMigrationLocator migrationLocator, IRuntimeVersionLocator runtimeVersionLocator, IStartUpVersionLocator startUpVersionLocator)
 {
     _migrationLocator      = migrationLocator;
     _runtimeVersionLocator = runtimeVersionLocator;
     _startUpVersionLocator = startUpVersionLocator;
 }
예제 #17
0
 /// <summary>
 /// Creates a new instance of <seealso cref="MigrationRunner" />
 /// </summary>
 /// <param name="url">A MongoDb connection string.</param>
 /// <param name="migrationAssembly">The target assembly containing migrations.</param>
 /// <param name="factory">The factory that's responsible for instantiating migrations.</param>
 public MigrationRunner(MongoUrl url, Assembly migrationAssembly, IMigrationFactory factory)
 {
     _dbMigrations = new DatabaseMigrations(url);
     _locator      = new MigrationLocator(migrationAssembly, _dbMigrations.GetDatabase(), factory);
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="DatabaseMigrationStatus" /> class.
 /// </summary>
 /// <param name="mongoDatabase">The mongo database.</param>
 /// <param name="migrationLocator">The migration locator.</param>
 public DatabaseMigrationStatus(IMongoDatabase mongoDatabase, IMigrationLocator migrationLocator)
 {
     _database         = mongoDatabase ?? throw new ArgumentNullException(nameof(mongoDatabase));
     _migrationLocator = migrationLocator ?? throw new ArgumentNullException(nameof(migrationLocator));
 }
 public MigrationService(IMigrationLocator locator, IMigrationLogFactory logFactory, IMigrationFactory migrationFactory)
 {
     this.locator          = locator;
     this.logFactory       = logFactory;
     this.migrationFactory = migrationFactory;
 }
예제 #20
0
 public Application(IMongoRegistrator mongoRegistrator, IMigrationLocator migrationLocator, IVersionLocator versionLocator)
 {
     _mongoRegistrator = mongoRegistrator;
     _migrationLocator = migrationLocator;
     _versionLocator   = versionLocator;
 }